From: Victor Stinner Date: Sun, 24 Nov 2013 11:27:59 +0000 (+0100) Subject: Issue #19741: cleanup tracemalloc_realloc() X-Git-Tag: v3.4.0b1~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=08facd200975d8001bf045bab407adf727e6fc9f;p=thirdparty%2FPython%2Fcpython.git Issue #19741: cleanup tracemalloc_realloc() Explain that unhandled error case is very unlikely --- diff --git a/Modules/_tracemalloc.c b/Modules/_tracemalloc.c index 22ec5ddf2a28..1a782f6cd970 100644 --- a/Modules/_tracemalloc.c +++ b/Modules/_tracemalloc.c @@ -563,20 +563,27 @@ tracemalloc_realloc(void *ctx, void *ptr, size_t new_size, int gil_held) ptr2 = alloc->realloc(alloc->ctx, ptr, new_size); if (ptr2 != NULL) { - if (ptr != NULL) + if (ptr != NULL) { + /* resize */ tracemalloc_log_free(ptr); - if (tracemalloc_log_alloc(ptr2, new_size) < 0) { - if (ptr == NULL) { + if (tracemalloc_log_alloc(ptr2, new_size) < 0) { + /* Memory allocation failed. The error cannot be reported to + the caller, because realloc() may already have shrinked the + memory block and so removed bytes. + + This case is very unlikely since we just released an hash + entry, so we have enough free bytes to allocate the new + entry. */ + } + } + else { + /* new allocation */ + if (tracemalloc_log_alloc(ptr2, new_size) < 0) { /* Memory allocation failed */ alloc->free(alloc->ctx, ptr2); ptr2 = NULL; } - else { - /* Memory allocation failed. The error cannot be reported to - the caller, because realloc() may already have shrinked the - memory block and so removed bytes. */ - } } } set_reentrant(0);