[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