[Zope-Checkins] CVS: Zope3/lib/python/Persistence/BTrees - BucketTemplate.c:1.8

Tim Peters tim.one@comcast.net
Mon, 17 Jun 2002 15:04:32 -0400


Update of /cvs-repository/Zope3/lib/python/Persistence/BTrees
In directory cvs.zope.org:/tmp/cvs-serv31816

Modified Files:
	BucketTemplate.c 
Log Message:
Bucket_grow():  This could leak memory in error cases; repaired.


=== Zope3/lib/python/Persistence/BTrees/BucketTemplate.c 1.7 => 1.8 ===
 
         UNLESS (noval) {
-            UNLESS (values = BTree_Realloc(self->values,
-                                           sizeof(VALUE_TYPE) * newsize))
+            values = BTree_Realloc(self->values, sizeof(VALUE_TYPE) * newsize);
+            if (values == NULL) {
+                free(keys);
                 return -1;
+            }
             self->values = values;
         }
         self->keys = keys;
@@ -154,8 +156,12 @@
         UNLESS (self->keys = BTree_Malloc(sizeof(KEY_TYPE) * newsize))
             return -1;
         UNLESS (noval) {
-            UNLESS (self->values = BTree_Malloc(sizeof(VALUE_TYPE) * newsize))
+            self->values = BTree_Malloc(sizeof(VALUE_TYPE) * newsize);
+            if (self->values == NULL) {
+                free(self->keys);
+                self->keys = NULL;
                 return -1;
+            }
         }
     }
     self->size = newsize;