| 477 | |
| 478 | |
| 479 | NPY_NO_EXPORT void |
| 480 | PyDataMem_UserFREE(void *ptr, size_t size, PyObject *mem_handler) |
| 481 | { |
| 482 | PyDataMem_Handler *handler = (PyDataMem_Handler *) PyCapsule_GetPointer(mem_handler, "mem_handler"); |
| 483 | if (handler == NULL) { |
| 484 | WARN_NO_RETURN(PyExc_RuntimeWarning, |
| 485 | "Could not get pointer to 'mem_handler' from PyCapsule"); |
| 486 | return; |
| 487 | } |
| 488 | PyTraceMalloc_Untrack(NPY_TRACE_DOMAIN, (npy_uintp)ptr); |
| 489 | handler->allocator.free(handler->allocator.ctx, ptr, size); |
| 490 | if (_PyDataMem_eventhook != NULL) { |
| 491 | NPY_ALLOW_C_API_DEF |
| 492 | NPY_ALLOW_C_API |
| 493 | if (_PyDataMem_eventhook != NULL) { |
| 494 | (*_PyDataMem_eventhook)(ptr, NULL, 0, |
| 495 | _PyDataMem_eventhook_user_data); |
| 496 | } |
| 497 | NPY_DISABLE_C_API |
| 498 | } |
| 499 | } |
| 500 | |
| 501 | NPY_NO_EXPORT void * |
| 502 | PyDataMem_UserRENEW(void *ptr, size_t size, PyObject *mem_handler) |
no test coverage detected