summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2009-01-13 17:32:28 +0000
committerThomas Heller <theller@ctypes.org>2009-01-13 17:32:28 +0000
commit3a6a0431d0a016119b3246748b5aa245ff1ac4fe (patch)
tree0cbf4b2c247e4ff2241fc3245c14911d62ffe93b
parent847c43a22d0e8146bb4fa520f8fcb95053e11ff0 (diff)
downloadcpython-git-3a6a0431d0a016119b3246748b5aa245ff1ac4fe.tar.gz
Fix refcount leak in error cases. Bug found by coverity.
-rw-r--r--Modules/_ctypes/cfield.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c
index ef85b87cbf..96264e7e9a 100644
--- a/Modules/_ctypes/cfield.c
+++ b/Modules/_ctypes/cfield.c
@@ -1452,11 +1452,14 @@ Z_set(void *ptr, PyObject *value, Py_ssize_t size)
size += 1; /* terminating NUL */
size *= sizeof(wchar_t);
buffer = (wchar_t *)PyMem_Malloc(size);
- if (!buffer)
+ if (!buffer) {
+ Py_DECREF(value);
return PyErr_NoMemory();
+ }
memset(buffer, 0, size);
keep = PyCObject_FromVoidPtr(buffer, PyMem_Free);
if (!keep) {
+ Py_DECREF(value);
PyMem_Free(buffer);
return NULL;
}