[Python-checkins] r51713 - in python/branches/release25-maint: Lib/test/test_mutants.py Misc/NEWS Objects/dictobject.c

neal.norwitz python-checkins at python.org
Tue Sep 5 03:54:06 CEST 2006


Author: neal.norwitz
Date: Tue Sep  5 03:54:06 2006
New Revision: 51713

Modified:
   python/branches/release25-maint/Lib/test/test_mutants.py
   python/branches/release25-maint/Misc/NEWS
   python/branches/release25-maint/Objects/dictobject.c
Log:
Fix SF bug #1546288, crash in dict_equal



Modified: python/branches/release25-maint/Lib/test/test_mutants.py
==============================================================================
--- python/branches/release25-maint/Lib/test/test_mutants.py	(original)
+++ python/branches/release25-maint/Lib/test/test_mutants.py	Tue Sep  5 03:54:06 2006
@@ -91,12 +91,17 @@
         self.hashcode = random.randrange(1000000000)
 
     def __hash__(self):
+        return 42
         return self.hashcode
 
     def __cmp__(self, other):
         maybe_mutate()   # The point of the test.
         return cmp(self.i, other.i)
 
+    def __eq__(self, other):
+        maybe_mutate()   # The point of the test.
+        return self.i == other.i
+
     def __repr__(self):
         return "Horrid(%d)" % self.i
 
@@ -132,7 +137,10 @@
     while dict1 and len(dict1) == len(dict2):
         if verbose:
             print ".",
-        c = cmp(dict1, dict2)
+        if random.random() < 0.5:
+            c = cmp(dict1, dict2)
+        else:
+            c = dict1 == dict2
     if verbose:
         print
 

Modified: python/branches/release25-maint/Misc/NEWS
==============================================================================
--- python/branches/release25-maint/Misc/NEWS	(original)
+++ python/branches/release25-maint/Misc/NEWS	Tue Sep  5 03:54:06 2006
@@ -9,6 +9,13 @@
 
 *Release date: XX-SEP-2006*
 
+(Hopefully nothing.)
+
+What's New in Python 2.5 release candidate 2?
+=============================================
+
+*Release date: XX-SEP-2006*
+
 Core and builtins
 -----------------
 
@@ -18,12 +25,14 @@
 - Patch #1541585: fix buffer overrun when performing repr() on
   a unicode string in a build with wide unicode (UCS-4) support.
 
+- Patch #1546288: fix seg fault in dict_equal due to ref counting bug.
+
 
 Library
 -------
 
 - Patch #1550886: Fix decimal module context management implementation
-  to match the localcontext() example from PEP 343
+  to match the localcontext() example from PEP 343.
 
 - Bug #1541863: uuid.uuid1 failed to generate unique identifiers
   on systems with low clock resolution.

Modified: python/branches/release25-maint/Objects/dictobject.c
==============================================================================
--- python/branches/release25-maint/Objects/dictobject.c	(original)
+++ python/branches/release25-maint/Objects/dictobject.c	Tue Sep  5 03:54:06 2006
@@ -1585,7 +1585,10 @@
 			/* temporarily bump aval's refcount to ensure it stays
 			   alive until we're done with it */
 			Py_INCREF(aval);
+			/* ditto for key */
+			Py_INCREF(key);
 			bval = PyDict_GetItem((PyObject *)b, key);
+			Py_DECREF(key);
 			if (bval == NULL) {
 				Py_DECREF(aval);
 				return 0;


More information about the Python-checkins mailing list