mirror of
https://github.com/python/cpython.git
synced 2026-01-06 23:42:34 +00:00
Issue #21639: Fix a division by zero in tracemalloc on calloc(0, 0). The
regression was introduced recently with the introduction of the new "calloc" functions (PyMem_RawCalloc, PyMem_Calloc, PyObject_Calloc). Add also a unit test to check for the non-regression.
This commit is contained in:
commit
aa0e7afa43
2 changed files with 7 additions and 1 deletions
|
|
@ -807,6 +807,12 @@ def test_sys_xoptions_invalid(self):
|
|||
b'number of frames',
|
||||
stderr)
|
||||
|
||||
def test_pymem_alloc0(self):
|
||||
# Issue #21639: Check that PyMem_Malloc(0) with tracemalloc enabled
|
||||
# does not crash.
|
||||
code = 'import _testcapi; _testcapi.test_pymem_alloc0(); 1'
|
||||
assert_python_ok('-X', 'tracemalloc', '-c', code)
|
||||
|
||||
|
||||
def test_main():
|
||||
support.run_unittest(
|
||||
|
|
|
|||
|
|
@ -478,7 +478,7 @@ tracemalloc_alloc(int use_calloc, void *ctx, size_t nelem, size_t elsize)
|
|||
PyMemAllocator *alloc = (PyMemAllocator *)ctx;
|
||||
void *ptr;
|
||||
|
||||
assert(nelem <= PY_SIZE_MAX / elsize);
|
||||
assert(elsize == 0 || nelem <= PY_SIZE_MAX / elsize);
|
||||
|
||||
if (use_calloc)
|
||||
ptr = alloc->calloc(alloc->ctx, nelem, elsize);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue