]> granicus.if.org Git - python/commitdiff
Fix a refleak in bytearray.split and bytearray.rsplit, detected by
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>
Sun, 17 Aug 2008 21:05:18 +0000 (21:05 +0000)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>
Sun, 17 Aug 2008 21:05:18 +0000 (21:05 +0000)
   regrtest.py -R:: test_bytes

Objects/bytearrayobject.c

index 9ff44586f7305ddd7244fcde338391d2b200a7b0..5ba1f6d8e52b1726cc532f82187806fc98146cb5 100644 (file)
@@ -2295,8 +2295,11 @@ bytes_split(PyByteArrayObject *self, PyObject *args)
         PyBuffer_Release(&vsub);
         return NULL;
     }
-    if (n == 1)
-        return split_char(s, len, sub[0], maxsplit);
+    if (n == 1) {
+        list = split_char(s, len, sub[0], maxsplit);
+        PyBuffer_Release(&vsub);
+        return list;
+    }
 
     list = PyList_New(PREALLOC_SIZE(maxsplit));
     if (list == NULL) {
@@ -2527,8 +2530,11 @@ bytes_rsplit(PyByteArrayObject *self, PyObject *args)
         PyBuffer_Release(&vsub);
         return NULL;
     }
-    else if (n == 1)
-        return rsplit_char(s, len, sub[0], maxsplit);
+    else if (n == 1) {
+        list = rsplit_char(s, len, sub[0], maxsplit);
+        PyBuffer_Release(&vsub);
+        return list;
+    }
 
     list = PyList_New(PREALLOC_SIZE(maxsplit));
     if (list == NULL) {