]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Use _PyErr_ChainStackItem() inside gen_send_ex(). (GH-20173)
authorChris Jerdonek <chris.jerdonek@gmail.com>
Mon, 18 May 2020 22:36:09 +0000 (15:36 -0700)
committerGitHub <noreply@github.com>
Mon, 18 May 2020 22:36:09 +0000 (15:36 -0700)
_PyErr_ChainStackItem was just added in GH-19951 (for bpo-31033).

Objects/genobject.c

index 40179cdbf7dbd2011f58877e148057a53dd39fa9..271720bdf8b4cef7a5a8755e0c077114ac6f8e2f 100644 (file)
@@ -203,16 +203,8 @@ gen_send_ex(PyGenObject *gen, PyObject *arg, int exc, int closing)
     assert(f->f_back == NULL);
     f->f_back = tstate->frame;
 
-    _PyErr_StackItem *gi_exc_state = &gen->gi_exc_state;
-    if (exc && gi_exc_state->exc_type != NULL &&
-        gi_exc_state->exc_type != Py_None)
-    {
-        Py_INCREF(gi_exc_state->exc_type);
-        Py_XINCREF(gi_exc_state->exc_value);
-        Py_XINCREF(gi_exc_state->exc_traceback);
-        _PyErr_ChainExceptions(gi_exc_state->exc_type,
-                               gi_exc_state->exc_value,
-                               gi_exc_state->exc_traceback);
+    if (exc) {
+        _PyErr_ChainStackItem(&gen->gi_exc_state);
     }
 
     gen->gi_running = 1;