if (self->my_callback != NULL) {
PyObject *err_type, *err_value, *err_traceback;
- int have_error = PyErr_Occurred() ? 1 : 0;
- if (have_error)
- PyErr_Fetch(&err_type, &err_value, &err_traceback);
+ /* This saves the current exception state */
+ PyErr_Fetch(&err_type, &err_value, &err_traceback);
cbresult = PyObject_CallObject(self->my_callback, NULL);
if (cbresult == NULL)
else
Py_DECREF(cbresult);
- if (have_error)
- PyErr_Restore(err_type, err_value, err_traceback);
+ /* This restores the saved exception state */
+ PyErr_Restore(err_type, err_value, err_traceback);
Py_DECREF(self->my_callback);
}