diff options
author | Thomas Heller <theller@ctypes.org> | 2009-01-13 17:32:28 +0000 |
---|---|---|
committer | Thomas Heller <theller@ctypes.org> | 2009-01-13 17:32:28 +0000 |
commit | 3a6a0431d0a016119b3246748b5aa245ff1ac4fe (patch) | |
tree | 0cbf4b2c247e4ff2241fc3245c14911d62ffe93b | |
parent | 847c43a22d0e8146bb4fa520f8fcb95053e11ff0 (diff) | |
download | cpython-git-3a6a0431d0a016119b3246748b5aa245ff1ac4fe.tar.gz |
Fix refcount leak in error cases. Bug found by coverity.
-rw-r--r-- | Modules/_ctypes/cfield.c | 5 |
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; } |