summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2013-07-26 13:07:34 (GMT)
committerChristian Heimes <christian@cheimes.de>2013-07-26 13:07:34 (GMT)
commitcb7ca526e892ba966a2bc4b61a240cdd3cf9fd99 (patch)
treef5bdd85f96296f581263581d00df7dd1f88b7afa /Modules
parent5e3de55b0130f57b659795dbda294558d18d1f09 (diff)
parent3205e74d880a7cacd52ff032325de28acdec888d (diff)
downloadcpython-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.c19
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);