From 3877711296cbfa4a0bcafc3c5560609a1ce2d079 Mon Sep 17 00:00:00 2001 From: Bryan Forbes Date: Fri, 30 Apr 2010 13:35:57 -0500 Subject: More memory leak plugging. Some code cleanup too. --- cython/mobile_image_mounter.pxi | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'cython/mobile_image_mounter.pxi') diff --git a/cython/mobile_image_mounter.pxi b/cython/mobile_image_mounter.pxi index e70cff7..bf304d4 100644 --- a/cython/mobile_image_mounter.pxi +++ b/cython/mobile_image_mounter.pxi @@ -32,11 +32,7 @@ cdef class MobileImageMounterClient(PropertyListService): cdef mobile_image_mounter_client_t _c_client def __cinit__(self, iDevice device not None, int port, *args, **kwargs): - cdef: - iDevice dev = device - mobile_image_mounter_error_t err - err = mobile_image_mounter_new(dev._c_dev, port, &self._c_client) - self.handle_error(err) + self.handle_error(mobile_image_mounter_new(device._c_dev, port, &self._c_client)) def __dealloc__(self): cdef mobile_image_mounter_error_t err @@ -52,8 +48,14 @@ cdef class MobileImageMounterClient(PropertyListService): plist.plist_t c_node = NULL mobile_image_mounter_error_t err err = mobile_image_mounter_lookup_image(self._c_client, image_type, &c_node) - self.handle_error(err) - return plist.plist_t_to_node(c_node) + + try: + self.handle_error(err) + + return plist.plist_t_to_node(c_node) + except Exception, e: + if c_node != NULL: + plist.plist_free(c_node) cpdef plist.Node mount_image(self, bytes image_path, bytes image_signature, bytes image_type): cdef: @@ -61,8 +63,14 @@ cdef class MobileImageMounterClient(PropertyListService): mobile_image_mounter_error_t err err = mobile_image_mounter_mount_image(self._c_client, image_path, image_signature, len(image_signature), image_type, &c_node) - self.handle_error(err) - return plist.plist_t_to_node(c_node) + + try: + self.handle_error(err) + + return plist.plist_t_to_node(c_node) + except Exception, e: + if c_node != NULL: + plist.plist_free(c_node) cpdef hangup(self): cdef mobile_image_mounter_error_t err -- cgit v1.1-32-gdbae