@@ -2271,12 +2271,17 @@ static PyObject *CreateSwappedType(ctypes_state *st, PyTypeObject *type,
22712271 stginfo -> ffi_type_pointer = * fmt -> pffi_type ;
22722272 }
22732273 else {
2274+ const size_t els_size = sizeof (fmt -> pffi_type -> elements );
22742275 stginfo -> ffi_type_pointer .size = fmt -> pffi_type -> size ;
22752276 stginfo -> ffi_type_pointer .alignment = fmt -> pffi_type -> alignment ;
22762277 stginfo -> ffi_type_pointer .type = fmt -> pffi_type -> type ;
2277- stginfo -> ffi_type_pointer .elements = PyMem_Malloc (2 * sizeof (ffi_type ));
2278+ stginfo -> ffi_type_pointer .elements = PyMem_Malloc (els_size );
2279+ if (!stginfo -> ffi_type_pointer .elements ) {
2280+ Py_DECREF (result );
2281+ return PyErr_NoMemory ();
2282+ }
22782283 memcpy (stginfo -> ffi_type_pointer .elements ,
2279- fmt -> pffi_type -> elements , 2 * sizeof ( ffi_type ) );
2284+ fmt -> pffi_type -> elements , els_size );
22802285 }
22812286 stginfo -> align = fmt -> pffi_type -> alignment ;
22822287 stginfo -> length = 0 ;
@@ -2382,6 +2387,10 @@ PyCSimpleType_init(PyObject *self, PyObject *args, PyObject *kwds)
23822387 stginfo -> ffi_type_pointer .alignment = fmt -> pffi_type -> alignment ;
23832388 stginfo -> ffi_type_pointer .type = fmt -> pffi_type -> type ;
23842389 stginfo -> ffi_type_pointer .elements = PyMem_Malloc (els_size );
2390+ if (!stginfo -> ffi_type_pointer .elements ) {
2391+ PyErr_NoMemory ();
2392+ goto error ;
2393+ }
23852394 memcpy (stginfo -> ffi_type_pointer .elements ,
23862395 fmt -> pffi_type -> elements , els_size );
23872396 }
0 commit comments