]> granicus.if.org Git - python/commitdiff
Fix refleak in Modules/audioop.c.
authorMark Dickinson <dickinsm@gmail.com>
Sun, 4 Jul 2010 10:15:11 +0000 (10:15 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Sun, 4 Jul 2010 10:15:11 +0000 (10:15 +0000)
Modules/audioop.c

index 66f1f1f36a7465a44c4c32909533f119bb53a76b..38e3e7ace2fb902cc8c373058c1d571e7486a496 100644 (file)
@@ -807,10 +807,13 @@ audioop_tomono(PyObject *self, PyObject *args)
         return 0;
     cp = pcp.buf;
     len = pcp.len;
-    if (!audioop_check_parameters(len, size))
+    if (!audioop_check_parameters(len, size)) {
+        PyBuffer_Release(&pcp);
         return NULL;
+    }
     if (((len / size) & 1) != 0) {
         PyErr_SetString(AudioopError, "not a whole number of frames");
+        PyBuffer_Release(&pcp);
         return NULL;
     }
 
@@ -824,8 +827,10 @@ audioop_tomono(PyObject *self, PyObject *args)
     }
 
     rv = PyBytes_FromStringAndSize(NULL, len/2);
-    if ( rv == 0 )
+    if ( rv == 0 ) {
+        PyBuffer_Release(&pcp);
         return 0;
+    }
     ncp = (signed char *)PyBytes_AsString(rv);