[Python-checkins] 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

thomas.heller python-checkins at python.org
Mon Apr 30 17:58:52 CEST 2007


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;


More information about the Python-checkins mailing list