From 53504fa4bf3903821636aa0c10c28ea398042742 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sun, 14 Sep 2025 15:04:51 +0200 Subject: [PATCH] fix a crash after set_malloc_size_cb(NULL) also, remove a now-redundant if() followup for f33367f2ab19 --- mysys/my_malloc.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/mysys/my_malloc.c b/mysys/my_malloc.c index 076165b56fe..2509f8f63e2 100644 --- a/mysys/my_malloc.c +++ b/mysys/my_malloc.c @@ -53,7 +53,7 @@ MALLOC_SIZE_CB update_malloc_size= dummy; void set_malloc_size_cb(MALLOC_SIZE_CB func) { - update_malloc_size= func; + update_malloc_size= func ? func : dummy; } @@ -107,11 +107,8 @@ void *my_malloc(PSI_memory_key key, size_t size, myf my_flags) int flag= MY_TEST(my_flags & MY_THREAD_SPECIFIC); mh->m_size= size | flag; mh->m_key= PSI_CALL_memory_alloc(key, size, & mh->m_owner); - if (update_malloc_size != dummy) - { - mh->m_size|=2; - update_malloc_size(size + HEADER_SIZE, flag); - } + mh->m_size|=2; + update_malloc_size(size + HEADER_SIZE, flag); point= HEADER_TO_USER(mh); if (my_flags & MY_ZEROFILL) bzero(point, size); @@ -176,7 +173,7 @@ void *my_realloc(PSI_memory_key key, void *old_point, size_t size, myf my_flags) { mh->m_size= size | old_flags; mh->m_key= PSI_CALL_memory_realloc(key, old_size, size, & mh->m_owner); - if (update_malloc_size != dummy && (old_flags & 2)) + if (old_flags & 2) update_malloc_size((longlong)size - (longlong)old_size, old_flags & 1); point= HEADER_TO_USER(mh); } @@ -207,7 +204,7 @@ void my_free(void *ptr) old_flags= mh->m_size & 3; PSI_CALL_memory_free(mh->m_key, old_size, mh->m_owner); - if (update_malloc_size != dummy && (old_flags & 2)) + if (old_flags & 2) update_malloc_size(- (longlong) old_size - HEADER_SIZE, old_flags & 1); #ifndef SAFEMALLOC