diff options
author | Bryan Forbes | 2010-04-30 13:35:57 -0500 |
---|---|---|
committer | Martin Szulecki | 2012-03-20 23:25:55 +0100 |
commit | 3877711296cbfa4a0bcafc3c5560609a1ce2d079 (patch) | |
tree | 751f1fd27ce3ee5d8dd9d748600381c0d2e5d6bd /cython/screenshotr.pxi | |
parent | 74943414c8e04a92f42dcbc4fac1599c7f9deed2 (diff) | |
download | libimobiledevice-3877711296cbfa4a0bcafc3c5560609a1ce2d079.tar.gz libimobiledevice-3877711296cbfa4a0bcafc3c5560609a1ce2d079.tar.bz2 |
More memory leak plugging. Some code cleanup too.
Diffstat (limited to 'cython/screenshotr.pxi')
-rw-r--r-- | cython/screenshotr.pxi | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/cython/screenshotr.pxi b/cython/screenshotr.pxi index d7dfc57..9213b64 100644 --- a/cython/screenshotr.pxi +++ b/cython/screenshotr.pxi @@ -32,11 +32,7 @@ cdef class ScreenshotrClient(DeviceLinkService): cdef screenshotr_client_t _c_client def __cinit__(self, iDevice device not None, int port, *args, **kwargs): - cdef: - iDevice dev = device - screenshotr_error_t err - err = screenshotr_client_new(dev._c_dev, port, &self._c_client) - self.handle_error(err) + self.handle_error(screenshotr_client_new(device._c_dev, port, &self._c_client)) def __dealloc__(self): cdef screenshotr_error_t err @@ -46,15 +42,21 @@ cdef class ScreenshotrClient(DeviceLinkService): cpdef bytes take_screenshot(self): cdef: - char* c_data + char* c_data = NULL uint64_t data_size bytes result screenshotr_error_t err err = screenshotr_take_screenshot(self._c_client, &c_data, &data_size) - self.handle_error(err) - result = c_data[:data_size] - return result + try: + self.handle_error(err) + + result = c_data[:data_size] + return result + except Exception, e: + if c_data != NULL: + stdlib.free(c_data) + raise cdef inline BaseError _error(self, int16_t ret): return ScreenshotrError(ret) |