mirror of
https://github.com/python/cpython.git
synced 2026-02-01 04:02:20 +00:00
Backport issue 4597 to python 2.5.3: Fixed several opcodes that weren't always
propagating exceptions.
This commit is contained in:
parent
6f63190ded
commit
6f5d3f326f
3 changed files with 31 additions and 3 deletions
|
|
@ -1025,6 +1025,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
}
|
||||
Py_FatalError("invalid argument to DUP_TOPX"
|
||||
" (bytecode corruption?)");
|
||||
/* Never returns, so don't bother to set why. */
|
||||
break;
|
||||
|
||||
case UNARY_POSITIVE:
|
||||
|
|
@ -1618,9 +1619,11 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
case PRINT_NEWLINE:
|
||||
if (stream == NULL || stream == Py_None) {
|
||||
w = PySys_GetObject("stdout");
|
||||
if (w == NULL)
|
||||
if (w == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"lost sys.stdout");
|
||||
why = WHY_EXCEPTION;
|
||||
}
|
||||
}
|
||||
if (w != NULL) {
|
||||
Py_INCREF(w);
|
||||
|
|
@ -1837,6 +1840,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
PyErr_Format(PyExc_SystemError,
|
||||
"no locals when loading %s",
|
||||
PyObject_REPR(w));
|
||||
why = WHY_EXCEPTION;
|
||||
break;
|
||||
}
|
||||
if (PyDict_CheckExact(v)) {
|
||||
|
|
@ -2381,7 +2385,10 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
Py_DECREF(v);
|
||||
if (x != NULL) {
|
||||
v = POP();
|
||||
err = PyFunction_SetClosure(x, v);
|
||||
if (PyFunction_SetClosure(x, v) != 0) {
|
||||
/* Can't happen unless bytecode is corrupt. */
|
||||
why = WHY_EXCEPTION;
|
||||
}
|
||||
Py_DECREF(v);
|
||||
}
|
||||
if (x != NULL && oparg > 0) {
|
||||
|
|
@ -2395,7 +2402,11 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
w = POP();
|
||||
PyTuple_SET_ITEM(v, oparg, w);
|
||||
}
|
||||
err = PyFunction_SetDefaults(x, v);
|
||||
if (PyFunction_SetDefaults(x, v) != 0) {
|
||||
/* Can't happen unless
|
||||
PyFunction_SetDefaults changes. */
|
||||
why = WHY_EXCEPTION;
|
||||
}
|
||||
Py_DECREF(v);
|
||||
}
|
||||
PUSH(x);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue