Rev 120: A bit more cleanup. in http://bazaar.launchpad.net/~meliae-dev/meliae/trunk

John Arbash Meinel john at arbash-meinel.com
Wed Dec 23 17:22:58 GMT 2009


At http://bazaar.launchpad.net/~meliae-dev/meliae/trunk

------------------------------------------------------------
revno: 120
revision-id: john at arbash-meinel.com-20091223172239-54paa072jangsls3
parent: john at arbash-meinel.com-20091223171910-we4iuzpnwo2vdz7l
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: trunk
timestamp: Wed 2009-12-23 11:22:39 -0600
message:
  A bit more cleanup.
-------------- next part --------------
=== modified file 'meliae/_loader.pyx'
--- a/meliae/_loader.pyx	2009-12-23 17:19:10 +0000
+++ b/meliae/_loader.pyx	2009-12-23 17:22:39 +0000
@@ -48,6 +48,17 @@
     return val
 
 
+cdef _free_ref_list(RefList *ref_list):
+    """Decref and free the list."""
+    cdef long i
+
+    if ref_list == NULL:
+        return
+    for i from 0 <= i < ref_list.size:
+        Py_DECREF(ref_list.refs[i])
+    PyMem_Free(ref_list)
+
+
 cdef object _ref_list_to_list(RefList *ref_list):
     """Convert the notation of [len, items, ...] into [items].
 
@@ -169,9 +180,7 @@
             return _ref_list_to_list(self._ref_list)
 
         def __set__(self, value):
-            if self._ref_list != NULL:
-                PyMem_Free(self._ref_list)
-                self._ref_list = NULL
+            _free_ref_list(self._ref_list)
             self._ref_list = _list_to_ref_list(value)
 
     property num_refs:
@@ -190,9 +199,7 @@
             return _ref_list_to_list(self._referrer_list)
 
         def __set__(self, value):
-            if self._referrer_list != NULL:
-                PyMem_Free(self._referrer_list)
-                self._referrer_list = NULL
+            _free_ref_list(self._referrer_list)
             self._referrer_list = _list_to_ref_list(value)
 
     property num_referrers:
@@ -204,16 +211,10 @@
 
     def __dealloc__(self):
         cdef long i
-        if self._ref_list != NULL:
-            for i from 0 <= i < self._ref_list.size:
-                Py_DECREF(self._ref_list.refs[i])
-            PyMem_Free(self._ref_list)
-            self._ref_list = NULL
-        if self._referrer_list != NULL:
-            for i from 0 <= i < self._referrer_list.size:
-                Py_DECREF(self._referrer_list.refs[i])
-            PyMem_Free(self._referrer_list)
-            self._referrer_list = NULL
+        _free_ref_list(self._ref_list)
+        self._ref_list = NULL
+        _free_ref_list(self._referrer_list)
+        self._referrer_list = NULL
 
     def __repr__(self):
         cdef int i, max_refs



More information about the bazaar-commits mailing list