diff --git a/LibC/stdlib.cpp b/LibC/stdlib.cpp index 06e48cf4cfc..4adaa0ee81c 100644 --- a/LibC/stdlib.cpp +++ b/LibC/stdlib.cpp @@ -9,6 +9,7 @@ #include #include #include +#include extern "C" { @@ -160,8 +161,11 @@ void* realloc(void *ptr, size_t size) validate_mallocation(ptr, "realloc()"); auto* header = (MallocHeader*)((((byte*)ptr) - sizeof(MallocHeader))); size_t old_size = header->size; + if (size == old_size) + return ptr; auto* new_ptr = malloc(size); - memcpy(new_ptr, ptr, old_size); + memcpy(new_ptr, ptr, min(old_size, size)); + free(ptr); return new_ptr; }