aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python/pyme
diff options
context:
space:
mode:
Diffstat (limited to 'lang/python/pyme')
-rw-r--r--lang/python/pyme/core.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py
index fd4802ec..2a37ba35 100644
--- a/lang/python/pyme/core.py
+++ b/lang/python/pyme/core.py
@@ -66,21 +66,29 @@ class Context(GpgmeWrapper):
self.last_progresscb = None
def __del__(self):
+ if not pygpgme:
+ # At interpreter shutdown, pygpgme is set to NONE.
+ return
+
self._free_passcb()
self._free_progresscb()
- if self.own:
+ if self.own and pygpgme.gpgme_release:
pygpgme.gpgme_release(self.wrapped)
def _free_passcb(self):
if self.last_passcb != None:
- pygpgme.pygpgme_clear_generic_cb(self.last_passcb)
- pygpgme.delete_PyObject_p_p(self.last_passcb)
+ if pygpgme.pygpgme_clear_generic_cb:
+ pygpgme.pygpgme_clear_generic_cb(self.last_passcb)
+ if pygpgme.delete_PyObject_p_p:
+ pygpgme.delete_PyObject_p_p(self.last_passcb)
self.last_passcb = None
def _free_progresscb(self):
if self.last_progresscb != None:
- pygpgme.pygpgme_clear_generic_cb(self.last_progresscb)
- pygpgme.delete_PyObject_p_p(self.last_progresscb)
+ if pygpgme.pygpgme_clear_generic_cb:
+ pygpgme.pygpgme_clear_generic_cb(self.last_progresscb)
+ if pygpgme.delete_PyObject_p_p:
+ pygpgme.delete_PyObject_p_p(self.last_progresscb)
self.last_progresscb = None
def op_keylist_all(self, *args, **kwargs):
@@ -292,14 +300,20 @@ class Data(GpgmeWrapper):
self.new()
def __del__(self):
- if self.wrapped != None:
+ if not pygpgme:
+ # At interpreter shutdown, pygpgme is set to NONE.
+ return
+
+ if self.wrapped != None and pygpgme.gpgme_data_release:
pygpgme.gpgme_data_release(self.wrapped)
self._free_readcb()
def _free_readcb(self):
if self.last_readcb != None:
- pygpgme.pygpgme_clear_generic_cb(self.last_readcb)
- pygpgme.delete_PyObject_p_p(self.last_readcb)
+ if pygpgme.pygpgme_clear_generic_cb:
+ pygpgme.pygpgme_clear_generic_cb(self.last_readcb)
+ if pygpgme.delete_PyObject_p_p:
+ pygpgme.delete_PyObject_p_p(self.last_readcb)
self.last_readcb = None
def new(self):