r55026 - python/branches/release25-maint/Modules/_ctypes python/branches/release25-maint/Modules/_ctypes/callproc.c python/branches/release25-maint/Modules/_ctypes/cfield.c python/branches/release25-maint/Modules/_ctypes/stgdict.c
Author: thomas.heller Date: Mon Apr 30 17:58:51 2007 New Revision: 55026 Modified: python/branches/release25-maint/Modules/_ctypes/ (props changed) python/branches/release25-maint/Modules/_ctypes/callproc.c python/branches/release25-maint/Modules/_ctypes/cfield.c python/branches/release25-maint/Modules/_ctypes/stgdict.c Log: Merged revisions 55025 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk/Modules/_ctypes ........ r55025 | thomas.heller | 2007-04-30 17:44:17 +0200 (Mo, 30 Apr 2007) | 4 lines Make sure to call PyErr_NoMemory() in several places where PyMem_Malloc() could potentially fail. Will backport to the release25-maint branch. ........ Modified: python/branches/release25-maint/Modules/_ctypes/callproc.c ============================================================================== --- python/branches/release25-maint/Modules/_ctypes/callproc.c (original) +++ python/branches/release25-maint/Modules/_ctypes/callproc.c Mon Apr 30 17:58:51 2007 @@ -539,8 +539,10 @@ size += 1; /* terminating NUL */ size *= sizeof(wchar_t); pa->value.p = PyMem_Malloc(size); - if (!pa->value.p) + if (!pa->value.p) { + PyErr_NoMemory(); return -1; + } memset(pa->value.p, 0, size); pa->keep = PyCObject_FromVoidPtr(pa->value.p, PyMem_Free); if (!pa->keep) { Modified: python/branches/release25-maint/Modules/_ctypes/cfield.c ============================================================================== --- python/branches/release25-maint/Modules/_ctypes/cfield.c (original) +++ python/branches/release25-maint/Modules/_ctypes/cfield.c Mon Apr 30 17:58:51 2007 @@ -1389,7 +1389,7 @@ size *= sizeof(wchar_t); buffer = (wchar_t *)PyMem_Malloc(size); if (!buffer) - return NULL; + return PyErr_NoMemory(); memset(buffer, 0, size); keep = PyCObject_FromVoidPtr(buffer, PyMem_Free); if (!keep) { Modified: python/branches/release25-maint/Modules/_ctypes/stgdict.c ============================================================================== --- python/branches/release25-maint/Modules/_ctypes/stgdict.c (original) +++ python/branches/release25-maint/Modules/_ctypes/stgdict.c Mon Apr 30 17:58:51 2007 @@ -72,8 +72,10 @@ return 0; size = sizeof(ffi_type *) * (src->length + 1); dst->ffi_type_pointer.elements = PyMem_Malloc(size); - if (dst->ffi_type_pointer.elements == NULL) + if (dst->ffi_type_pointer.elements == NULL) { + PyErr_NoMemory(); return -1; + } memcpy(dst->ffi_type_pointer.elements, src->ffi_type_pointer.elements, size); @@ -359,6 +361,10 @@ total_align = align ? align : 1; stgdict->ffi_type_pointer.type = FFI_TYPE_STRUCT; stgdict->ffi_type_pointer.elements = PyMem_Malloc(sizeof(ffi_type *) * (basedict->length + len + 1)); + if (stgdict->ffi_type_pointer.elements == NULL) { + PyErr_NoMemory(); + return -1; + } memset(stgdict->ffi_type_pointer.elements, 0, sizeof(ffi_type *) * (basedict->length + len + 1)); memcpy(stgdict->ffi_type_pointer.elements, @@ -373,6 +379,10 @@ total_align = 1; stgdict->ffi_type_pointer.type = FFI_TYPE_STRUCT; stgdict->ffi_type_pointer.elements = PyMem_Malloc(sizeof(ffi_type *) * (len + 1)); + if (stgdict->ffi_type_pointer.elements == NULL) { + PyErr_NoMemory(); + return -1; + } memset(stgdict->ffi_type_pointer.elements, 0, sizeof(ffi_type *) * (len + 1)); ffi_ofs = 0;
participants (1)
-
thomas.heller