@@ -238,7 +238,11 @@ PyDataMem_NEW(size_t size)
238
238
239
239
assert (size != 0 );
240
240
result = malloc (size );
241
- PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , size );
241
+ int ret = PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , size );
242
+ if (ret == -1 ) {
243
+ free (result );
244
+ return NULL ;
245
+ }
242
246
return result ;
243
247
}
244
248
@@ -251,7 +255,11 @@ PyDataMem_NEW_ZEROED(size_t nmemb, size_t size)
251
255
void * result ;
252
256
253
257
result = calloc (nmemb , size );
254
- PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , nmemb * size );
258
+ int ret = PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , nmemb * size );
259
+ if (ret == -1 ) {
260
+ free (result );
261
+ return NULL ;
262
+ }
255
263
return result ;
256
264
}
257
265
@@ -276,7 +284,11 @@ PyDataMem_RENEW(void *ptr, size_t size)
276
284
assert (size != 0 );
277
285
PyTraceMalloc_Untrack (NPY_TRACE_DOMAIN , (npy_uintp )ptr );
278
286
result = realloc (ptr , size );
279
- PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , size );
287
+ int ret = PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , size );
288
+ if (ret == -1 ) {
289
+ free (result );
290
+ return NULL ;
291
+ }
280
292
return result ;
281
293
}
282
294
@@ -360,7 +372,11 @@ PyDataMem_UserNEW(size_t size, PyObject *mem_handler)
360
372
}
361
373
assert (size != 0 );
362
374
result = handler -> allocator .malloc (handler -> allocator .ctx , size );
363
- PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , size );
375
+ int ret = PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , size );
376
+ if (ret == -1 ) {
377
+ handler -> allocator .free (handler -> allocator .ctx , result , size );
378
+ return NULL ;
379
+ }
364
380
return result ;
365
381
}
366
382
@@ -374,7 +390,11 @@ PyDataMem_UserNEW_ZEROED(size_t nmemb, size_t size, PyObject *mem_handler)
374
390
return NULL ;
375
391
}
376
392
result = handler -> allocator .calloc (handler -> allocator .ctx , nmemb , size );
377
- PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , nmemb * size );
393
+ int ret = PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , nmemb * size );
394
+ if (ret == -1 ) {
395
+ handler -> allocator .free (handler -> allocator .ctx , result , size );
396
+ return NULL ;
397
+ }
378
398
return result ;
379
399
}
380
400
@@ -404,11 +424,13 @@ PyDataMem_UserRENEW(void *ptr, size_t size, PyObject *mem_handler)
404
424
}
405
425
406
426
assert (size != 0 );
427
+ PyTraceMalloc_Untrack (NPY_TRACE_DOMAIN , (npy_uintp )ptr );
407
428
result = handler -> allocator .realloc (handler -> allocator .ctx , ptr , size );
408
- if (result != ptr ) {
409
- PyTraceMalloc_Untrack (NPY_TRACE_DOMAIN , (npy_uintp )ptr );
429
+ int ret = PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , size );
430
+ if (ret == -1 ) {
431
+ handler -> allocator .free (handler -> allocator .ctx , result , size );
432
+ return NULL ;
410
433
}
411
- PyTraceMalloc_Track (NPY_TRACE_DOMAIN , (npy_uintp )result , size );
412
434
return result ;
413
435
}
414
436
0 commit comments