[Pkg-gnupg-commit] [gpgme] 209/412: python: Fix raising stashed exceptions.
Daniel Kahn Gillmor
dkg at fifthhorseman.net
Thu Sep 22 21:26:48 UTC 2016
This is an automated email from the git hooks/post-receive script.
dkg pushed a commit to branch master
in repository gpgme.
commit 8a93f345b701332270c9829a4d0a93537f98a8d8
Author: Justus Winter <justus at g10code.com>
Date: Fri Jul 8 11:45:08 2016 +0200
python: Fix raising stashed exceptions.
Fixes an issue with newer versions of Python.
* lang/python/helpers.c (pygpgme_raise_callback_exception): Be more
careful when restoring the exception.
Signed-off-by: Justus Winter <justus at g10code.com>
---
lang/python/helpers.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/lang/python/helpers.c b/lang/python/helpers.c
index 1b66146..43a55d0 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:
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gpgme.git
More information about the Pkg-gnupg-commit
mailing list