Issue #27352: Correct the validation of the ImportFrom AST node and simplify
the implementation of the IMPORT_NAME opcode.
This commit is contained in:
parent
44a98b6bf3
commit
fbd1523525
|
@ -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");
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue