]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #19741: cleanup tracemalloc_realloc()
authorVictor Stinner <victor.stinner@gmail.com>
Sun, 24 Nov 2013 11:27:59 +0000 (12:27 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Sun, 24 Nov 2013 11:27:59 +0000 (12:27 +0100)
Explain that unhandled error case is very unlikely

Modules/_tracemalloc.c

index 22ec5ddf2a28240468098815c3d66cb5404406c8..1a782f6cd970a3c21b45cf19417579ae014ef1c1 100644 (file)
@@ -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);