diff options
author | Christian Heimes <christian@cheimes.de> | 2013-07-26 13:07:34 (GMT) |
---|---|---|
committer | Christian Heimes <christian@cheimes.de> | 2013-07-26 13:07:34 (GMT) |
commit | cb7ca526e892ba966a2bc4b61a240cdd3cf9fd99 (patch) | |
tree | f5bdd85f96296f581263581d00df7dd1f88b7afa /Modules | |
parent | 5e3de55b0130f57b659795dbda294558d18d1f09 (diff) | |
parent | 3205e74d880a7cacd52ff032325de28acdec888d (diff) | |
download | cpython-cb7ca526e892ba966a2bc4b61a240cdd3cf9fd99.zip cpython-cb7ca526e892ba966a2bc4b61a240cdd3cf9fd99.tar.gz cpython-cb7ca526e892ba966a2bc4b61a240cdd3cf9fd99.tar.bz2 |
Fix memory leaks and add checks for failing malloc() calls to testcapi module
CID 1058288
Fix declaration-after-statement of d49f65ff4f3c
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_testcapimodule.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 6ffe3c2..8ba8b55 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -1659,11 +1659,15 @@ test_long_numbits(PyObject *self) int i; for (i = 0; i < Py_ARRAY_LENGTH(testcases); ++i) { - PyObject *plong = PyLong_FromLong(testcases[i].input); + size_t nbits; + int sign; + PyObject *plong; + + plong = PyLong_FromLong(testcases[i].input); if (plong == NULL) return NULL; - size_t nbits = _PyLong_NumBits(plong); - int sign = _PyLong_Sign(plong); + nbits = _PyLong_NumBits(plong); + sign = _PyLong_Sign(plong); Py_DECREF(plong); if (nbits != testcases[i].nbits) @@ -2197,6 +2201,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++) { @@ -2208,10 +2214,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++) { @@ -2223,9 +2232,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++) { @@ -2237,6 +2249,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); |