[Zope-Checkins] SVN: Zope/trunk/ - Collector #1436: applied patch to fix a memory leak in

Andreas Jung andreas at andreas-jung.com
Mon Jul 26 16:07:11 EDT 2004


Log message for revision 26769:
  
       - Collector #1436: applied patch to fix a memory leak in 
         cAccessControl. 
  


Changed:
  U   Zope/trunk/doc/CHANGES.txt
  U   Zope/trunk/lib/python/AccessControl/cAccessControl.c
  U   Zope/trunk/lib/python/AccessControl/tests/testZopeSecurityPolicy.py


-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt	2004-07-26 20:01:16 UTC (rev 26768)
+++ Zope/trunk/doc/CHANGES.txt	2004-07-26 20:07:11 UTC (rev 26769)
@@ -129,6 +129,9 @@
 
     Bugs fixed
 
+     - Collector #1436: applied patch to fix a memory leak in 
+       cAccessControl. 
+
      - Collector #1431: fixed NetBSD support in initgroups.c
 
      - Collector #1406: fixed segmentation fault by acquisition

Modified: Zope/trunk/lib/python/AccessControl/cAccessControl.c
===================================================================
--- Zope/trunk/lib/python/AccessControl/cAccessControl.c	2004-07-26 20:01:16 UTC (rev 26768)
+++ Zope/trunk/lib/python/AccessControl/cAccessControl.c	2004-07-26 20:07:11 UTC (rev 26769)
@@ -1228,8 +1228,10 @@
                     }
                     goto err;
                   }
-                else 
+                else {
+                  Py_DECREF(eo);
                   Py_DECREF(proxy_roles);
+                }
 	} /* End of stack check */
 
 	/*| try:

Modified: Zope/trunk/lib/python/AccessControl/tests/testZopeSecurityPolicy.py
===================================================================
--- Zope/trunk/lib/python/AccessControl/tests/testZopeSecurityPolicy.py	2004-07-26 20:01:16 UTC (rev 26768)
+++ Zope/trunk/lib/python/AccessControl/tests/testZopeSecurityPolicy.py	2004-07-26 20:07:11 UTC (rev 26769)
@@ -221,6 +221,17 @@
         self.assertPolicyAllows(item, 'setuid_m')
         self.assertPolicyAllows(item, 'dangerous_m')
 
+    def testIdentityProxy(self):
+        eo = ImplictAcqObject()
+        eo.getOwner = lambda: None
+        self.context.stack.append(eo)
+        rc = sys.getrefcount(eo)
+        self.testUserAccess()
+        self.assertEqual(rc, sys.getrefcount(eo))
+        eo._proxy_roles = ()
+        self.testUserAccess()
+        self.assertEqual(rc, sys.getrefcount(eo))
+
     def testAccessToUnprotectedSubobjects(self):
         item = self.item
         r_item = self.a.r_item



More information about the Zope-Checkins mailing list