]> granicus.if.org Git - python/commitdiff
Fix memory leaks and add checks for failing malloc() calls to testcapi module
authorChristian Heimes <christian@cheimes.de>
Fri, 26 Jul 2013 13:03:50 +0000 (15:03 +0200)
committerChristian Heimes <christian@cheimes.de>
Fri, 26 Jul 2013 13:03:50 +0000 (15:03 +0200)
CID 1058288

Modules/_testcapimodule.c

index 7a007c749d6c3252d938466ba99d47c4f85411c7..6f87c130c542f16ee7fa9a09c517f9f7533feb8e 100644 (file)
@@ -2183,6 +2183,8 @@ profile_int(PyObject *self, PyObject* args)
     /* Test 3: Allocate a few integers, then release
        them all simultaneously. */
     multiple = malloc(sizeof(PyObject*) * 1000);
+    if (multiple == NULL)
+        return PyErr_NoMemory();
     gettimeofday(&start, NULL);
     for(k=0; k < 20000; k++) {
         for(i=0; i < 1000; i++) {
@@ -2194,10 +2196,13 @@ profile_int(PyObject *self, PyObject* args)
     }
     gettimeofday(&stop, NULL);
     print_delta(3, &start, &stop);
+    free(multiple);
 
     /* Test 4: Allocate many integers, then release
        them all simultaneously. */
     multiple = malloc(sizeof(PyObject*) * 1000000);
+    if (multiple == NULL)
+        return PyErr_NoMemory();
     gettimeofday(&start, NULL);
     for(k=0; k < 20; k++) {
         for(i=0; i < 1000000; i++) {
@@ -2209,9 +2214,12 @@ profile_int(PyObject *self, PyObject* args)
     }
     gettimeofday(&stop, NULL);
     print_delta(4, &start, &stop);
+    free(multiple);
 
     /* Test 5: Allocate many integers < 32000 */
     multiple = malloc(sizeof(PyObject*) * 1000000);
+    if (multiple == NULL)
+        return PyErr_NoMemory();
     gettimeofday(&start, NULL);
     for(k=0; k < 10; k++) {
         for(i=0; i < 1000000; i++) {
@@ -2223,6 +2231,7 @@ profile_int(PyObject *self, PyObject* args)
     }
     gettimeofday(&stop, NULL);
     print_delta(5, &start, &stop);
+    free(multiple);
 
     /* Test 6: Perform small int addition */
     op1 = PyLong_FromLong(1);