diff options
Diffstat (limited to 'lang/python/pyme/core.py')
-rw-r--r-- | lang/python/pyme/core.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py index 0c2dd602..6ef2dabe 100644 --- a/lang/python/pyme/core.py +++ b/lang/python/pyme/core.py @@ -16,9 +16,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# import generators for portability with python2.2 - - +import weakref from . import pygpgme from .errors import errorcheck, GPGMEError from . import errors @@ -149,6 +147,7 @@ class Context(GpgmeWrapper): self._free_passcb() self._free_progresscb() + self._free_statuscb() if self.own and pygpgme.gpgme_release: pygpgme.gpgme_release(self.wrapped) @@ -252,9 +251,9 @@ class Context(GpgmeWrapper): else: self.last_passcb = pygpgme.new_PyObject_p_p() if hook == None: - hookdata = (self, func) + hookdata = (weakref.ref(self), func) else: - hookdata = (self, func, hook) + hookdata = (weakref.ref(self), func, hook) pygpgme.pygpgme_set_passphrase_cb(self.wrapped, hookdata, self.last_passcb) def set_progress_cb(self, func, hook=None): @@ -275,9 +274,9 @@ class Context(GpgmeWrapper): else: self.last_progresscb = pygpgme.new_PyObject_p_p() if hook == None: - hookdata = (self, func) + hookdata = (weakref.ref(self), func) else: - hookdata = (self, func, hook) + hookdata = (weakref.ref(self), func, hook) pygpgme.pygpgme_set_progress_cb(self.wrapped, hookdata, self.last_progresscb) def set_status_cb(self, func, hook=None): @@ -297,9 +296,9 @@ class Context(GpgmeWrapper): else: self.last_statuscb = pygpgme.new_PyObject_p_p() if hook == None: - hookdata = (self, func) + hookdata = (weakref.ref(self), func) else: - hookdata = (self, func, hook) + hookdata = (weakref.ref(self), func, hook) pygpgme.pygpgme_set_status_cb(self.wrapped, hookdata, self.last_statuscb) @@ -333,9 +332,9 @@ class Context(GpgmeWrapper): if key == None: raise ValueError("op_edit: First argument cannot be None") if fnc_value: - opaquedata = (self, func, fnc_value) + opaquedata = (weakref.ref(self), func, fnc_value) else: - opaquedata = (self, func) + opaquedata = (weakref.ref(self), func) result = pygpgme.gpgme_op_edit(self.wrapped, key, opaquedata, out) if self._callback_excinfo: |