| 431 | /* Wrappers for the default or any user-assigned PyDataMem_Handler */ |
| 432 | |
| 433 | NPY_NO_EXPORT void * |
| 434 | PyDataMem_UserNEW(size_t size, PyObject *mem_handler) |
| 435 | { |
| 436 | void *result; |
| 437 | PyDataMem_Handler *handler = (PyDataMem_Handler *) PyCapsule_GetPointer(mem_handler, "mem_handler"); |
| 438 | if (handler == NULL) { |
| 439 | return NULL; |
| 440 | } |
| 441 | assert(size != 0); |
| 442 | result = handler->allocator.malloc(handler->allocator.ctx, size); |
| 443 | if (_PyDataMem_eventhook != NULL) { |
| 444 | NPY_ALLOW_C_API_DEF |
| 445 | NPY_ALLOW_C_API |
| 446 | if (_PyDataMem_eventhook != NULL) { |
| 447 | (*_PyDataMem_eventhook)(NULL, result, size, |
| 448 | _PyDataMem_eventhook_user_data); |
| 449 | } |
| 450 | NPY_DISABLE_C_API |
| 451 | } |
| 452 | PyTraceMalloc_Track(NPY_TRACE_DOMAIN, (npy_uintp)result, size); |
| 453 | return result; |
| 454 | } |
| 455 | |
| 456 | NPY_NO_EXPORT void * |
| 457 | PyDataMem_UserNEW_ZEROED(size_t nmemb, size_t size, PyObject *mem_handler) |
no outgoing calls
no test coverage detected