]> granicus.if.org Git - python/commitdiff
Issue #18408: add more assertions on PyErr_Occurred() in ceval.c to detect bugs
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 15 Jul 2013 23:02:12 +0000 (01:02 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 15 Jul 2013 23:02:12 +0000 (01:02 +0200)
earlier

Objects/abstract.c
Python/ceval.c

index 6896600ebab21f93bb72dac763a02bf3002023ef..6c8c561eac26840dcf1a7c4781191177df74002d 100644 (file)
@@ -2111,8 +2111,7 @@ PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw)
                 "NULL result without error in PyObject_Call");
         }
 #else
-        if (result == NULL)
-            assert(PyErr_Occurred());
+        assert(result != NULL || PyErr_Occurred());
 #endif
         return result;
     }
index 5a35524a247117c69d114a9879d3f966ce6018b1..2d84c09875836a666a7201f9e84db5cb8fd56e79 100644 (file)
@@ -4216,6 +4216,8 @@ call_function(PyObject ***pp_stack, int oparg
         READ_TIMESTAMP(*pintr1);
         Py_DECREF(func);
     }
+    assert((x != NULL && !PyErr_Occurred())
+           || (x == NULL && PyErr_Occurred()));
 
     /* Clear the stack of the function object.  Also removes
        the arguments in case they weren't consumed already
@@ -4509,6 +4511,8 @@ ext_call_fail:
     Py_XDECREF(callargs);
     Py_XDECREF(kwdict);
     Py_XDECREF(stararg);
+    assert((result != NULL && !PyErr_Occurred())
+           || (result == NULL && PyErr_Occurred()));
     return result;
 }