Issue #18408: add more assertions on PyErr_Occurred() in ceval.c to detect bugs
earlier
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 6896600..6c8c561 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -2111,8 +2111,7 @@
                 "NULL result without error in PyObject_Call");
         }
 #else
-        if (result == NULL)
-            assert(PyErr_Occurred());
+        assert(result != NULL || PyErr_Occurred());
 #endif
         return result;
     }
diff --git a/Python/ceval.c b/Python/ceval.c
index 5a35524..2d84c09 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4216,6 +4216,8 @@
         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 @@
     Py_XDECREF(callargs);
     Py_XDECREF(kwdict);
     Py_XDECREF(stararg);
+    assert((result != NULL && !PyErr_Occurred())
+           || (result == NULL && PyErr_Occurred()));
     return result;
 }