[Zodb-checkins] CVS: Zope/lib/python/BTrees - BucketTemplate.c:1.54.4.1

Tim Peters tim.one at comcast.net
Thu Apr 29 17:52:21 EDT 2004


Update of /cvs-repository/Zope/lib/python/BTrees
In directory cvs.zope.org:/tmp/cvs-serv30552/lib/python/BTrees

Modified Files:
      Tag: Zope-2_7-branch
	BucketTemplate.c 
Log Message:
http://collector.zope.org/Zope/553   "sporadic Zope crashes"

BTree bucket conflict resolution could segfault if fed three empty
buckets.  Fixed, and a new test added that *will* segfault if you
don't recompile Zope's C code.


=== Zope/lib/python/BTrees/BucketTemplate.c 1.54 => 1.54.4.1 ===
--- Zope/lib/python/BTrees/BucketTemplate.c:1.54	Sun May 11 20:36:17 2003
+++ Zope/lib/python/BTrees/BucketTemplate.c	Thu Apr 29 17:51:50 2004
@@ -1278,7 +1278,10 @@
         }
       return NULL;
     }
-  Py_DECREF(r);
+  /* r can be NULL if (and only if) 3 empty buckets were passed in (3
+   * instances of Py_None), so this must be an XDECREF.
+   */
+  Py_XDECREF(r);
   r=NULL;
 
   if (b[0]->next != b[1]->next || b[0]->next != b[2]->next)




More information about the Zodb-checkins mailing list