This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Valentin.Lorentz
Recipients Valentin.Lorentz
Date 2016-04-25.19:56:07
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1461614167.42.0.470146541912.issue26845@psf.upfronthosting.co.za>
In-reply-to
Content
In Python/errors.c, PyErr_Restore is defined this way:

void
PyErr_Restore(PyObject *type, PyObject *value, PyObject *traceback)


In Python/ceval.c, in the END_FINALLY case, it is called like this:

PyErr_Restore(status, exc, tb);


I believe “exc” should be renamed to “val”.


Indeed, END_FINALLY pops values from the stack like this:

PyObject *status = POP();
// ...
else if (PyExceptionClass_Check(status)) {
     PyObject *exc = POP();
     PyObject *tb = POP();
     PyErr_Restore(status, exc, tb);


And, they are pushed like this, in fast_block_end:

PUSH(tb);
PUSH(val);
PUSH(exc);
History
Date User Action Args
2016-04-25 19:56:07Valentin.Lorentzsetrecipients: + Valentin.Lorentz
2016-04-25 19:56:07Valentin.Lorentzsetmessageid: <1461614167.42.0.470146541912.issue26845@psf.upfronthosting.co.za>
2016-04-25 19:56:07Valentin.Lorentzlinkissue26845 messages
2016-04-25 19:56:07Valentin.Lorentzcreate