Rev 168: __sizeof__ was accidentally dereferencing _dummy entries, which in http://bazaar.launchpad.net/~meliae-dev/meliae/trunk

John Arbash Meinel john at arbash-meinel.com
Thu Jul 29 17:03:35 BST 2010


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

------------------------------------------------------------
revno: 168
revision-id: john at arbash-meinel.com-20100729160315-cfc2qurrdxdngjyf
parent: john at arbash-meinel.com-20100729155300-iuvsrugm61e1y9ih
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: trunk
timestamp: Thu 2010-07-29 11:03:15 -0500
message:
  __sizeof__ was accidentally dereferencing _dummy entries, which
  caused immediate segfault.
-------------- next part --------------
=== modified file 'meliae/_loader.pyx'
--- a/meliae/_loader.pyx	2010-07-29 15:53:00 +0000
+++ b/meliae/_loader.pyx	2010-07-29 16:03:15 +0000
@@ -646,7 +646,7 @@
             + (sizeof(_MemObject**) * (self._table_mask + 1)))
         for i from 0 <= i <= self._table_mask:
             cur = self._table[i]
-            if cur != NULL:
+            if cur != NULL and cur != _dummy:
                 my_size += (sizeof_RefList(cur.child_list)
                             + sizeof_RefList(cur.parent_list))
         return my_size

=== modified file 'meliae/tests/test__loader.py'
--- a/meliae/tests/test__loader.py	2010-07-29 15:50:28 +0000
+++ b/meliae/tests/test__loader.py	2010-07-29 16:03:15 +0000
@@ -216,6 +216,13 @@
         moc.add(0, 'foo', 100, children=[1234], parent_list=[3456, 7890])
         self.assertSizeOf(4+1024+2+3, moc, extra_size=3*4, has_gc=False)
 
+    def test__sizeof__with_dummy(self):
+        moc = _loader.MemObjectCollection()
+        moc.add(0, 'foo', 100, children=[1234], parent_list=[3456, 7890])
+        moc.add(1, 'foo', 100, children=[1234], parent_list=[3456, 7890])
+        del moc[1]
+        self.assertSizeOf(4+1024+2+3, moc, extra_size=3*4, has_gc=False)
+
 
 class Test_MemObjectProxy(tests.TestCase):
 



More information about the bazaar-commits mailing list