diff options
Diffstat (limited to 'lang')
| -rw-r--r-- | lang/python/helpers.c | 8 | 
1 files changed, 7 insertions, 1 deletions
| diff --git a/lang/python/helpers.c b/lang/python/helpers.c index 1b661466..43a55d08 100644 --- a/lang/python/helpers.c +++ b/lang/python/helpers.c @@ -150,12 +150,18 @@ PyObject *pygpgme_raise_callback_exception(PyObject *self)    else      Py_INCREF(ptraceback); +  /* We now have references for the extracted items.  */    Py_DECREF(excinfo); -  PyErr_Restore(ptype, pvalue, ptraceback); +  /* Clear the exception information.  It is important to do this +     before setting the error, because setting the attribute may +     execute python code, and the runtime system raises a SystemError +     if an exception is set but values are returned.  */    Py_INCREF(Py_None);    PyObject_SetAttrString(self, EXCINFO, Py_None); +  /* Restore exception.  */ +  PyErr_Restore(ptype, pvalue, ptraceback);    return NULL; /* Raise exception.  */   leave: | 
