]> granicus.if.org Git - python/commitdiff
Issue #27352: Correct the validation of the ImportFrom AST node and simplify
authorSerhiy Storchaka <storchaka@gmail.com>
Mon, 27 Jun 2016 18:39:12 +0000 (21:39 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Mon, 27 Jun 2016 18:39:12 +0000 (21:39 +0300)
the implementation of the IMPORT_NAME opcode.

Python/ast.c
Python/ceval.c

index 1efd0b7daa36b64bb77de15bf4c1fce567ec1124..8c13e0b29ccb31c4eef0707a8074c6083c360325 100644 (file)
@@ -475,8 +475,8 @@ validate_stmt(stmt_ty stmt)
     case Import_kind:
         return validate_nonempty_seq(stmt->v.Import.names, "names", "Import");
     case ImportFrom_kind:
-        if (stmt->v.ImportFrom.level < -1) {
-            PyErr_SetString(PyExc_ValueError, "ImportFrom level less than -1");
+        if (stmt->v.ImportFrom.level < 0) {
+            PyErr_SetString(PyExc_ValueError, "Negative ImportFrom level");
             return 0;
         }
         return validate_nonempty_seq(stmt->v.ImportFrom.names, "names", "ImportFrom");
index 341d36df48777bca3dc42e4771c1d3cc1e76bb26..2b4f7ccfaae9cb68ba4cf480573e0c17ae941e98 100644 (file)
@@ -2820,21 +2820,13 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
             Py_INCREF(func);
             from = POP();
             level = TOP();
-            if (PyLong_AsLong(level) != -1 || PyErr_Occurred())
-                args = PyTuple_Pack(5,
+            args = PyTuple_Pack(5,
                             name,
                             f->f_globals,
                             f->f_locals == NULL ?
                                   Py_None : f->f_locals,
                             from,
                             level);
-            else
-                args = PyTuple_Pack(4,
-                            name,
-                            f->f_globals,
-                            f->f_locals == NULL ?
-                                  Py_None : f->f_locals,
-                            from);
             Py_DECREF(level);
             Py_DECREF(from);
             if (args == NULL) {