Issue #19741: cleanup tracemalloc_realloc()
Explain that unhandled error case is very unlikely
diff --git a/Modules/_tracemalloc.c b/Modules/_tracemalloc.c
index 22ec5dd..1a782f6 100644
--- a/Modules/_tracemalloc.c
+++ b/Modules/_tracemalloc.c
@@ -563,20 +563,27 @@
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);