]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 55025 via svnmerge from
authorThomas Heller <theller@ctypes.org>
Mon, 30 Apr 2007 15:58:51 +0000 (15:58 +0000)
committerThomas Heller <theller@ctypes.org>
Mon, 30 Apr 2007 15:58:51 +0000 (15:58 +0000)
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.
........

Modules/_ctypes/callproc.c
Modules/_ctypes/cfield.c
Modules/_ctypes/stgdict.c

index 738ed2f79dc07b733d953fd4007b42ab7178ebae..0c35f383861af1acd36e1b7febb717745140e83d 100644 (file)
@@ -539,8 +539,10 @@ static int ConvParam(PyObject *obj, int index, struct argument *pa)
                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) {
index c16a387464f9c928a0dc89daf526a6e2fbbddca0..6aa68a8f1ffc10903b3ad37ef8d8c5dd1e0f8110 100644 (file)
@@ -1389,7 +1389,7 @@ Z_set(void *ptr, PyObject *value, unsigned size)
                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) {
index 8fd9a1e576382bb0a0de401c160a48959d851023..5651d6260a52ffa46933a92557b28a0520169cc7 100644 (file)
@@ -72,8 +72,10 @@ StgDict_clone(StgDictObject *dst, StgDictObject *src)
                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 @@ StructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct)
                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 @@ StructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct)
                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;