Skip to content

Commit eb420f0

Browse files
author
Simon Pickartz
committed
fix realloc behavior
-- if ptr is NULL act like malloc() -- memcpy the minimum of new_size and old_size
1 parent 1c95fcf commit eb420f0

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

malloc_bt.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@ extern "C" void free(void *ptr) {
3535
extern "C" void *realloc(void *ptr, size_t new_size) {
3636
printf("realloc %p - %zu\n", ptr, new_size);
3737
if (new_size == 0) return nullptr;
38+
if (ptr == NULL) return malloc(new_size);
3839

3940
void *temp = malloc(new_size);
4041

4142
size_t old_size = *(size_t *)(static_cast<char *>(ptr) - sizeof(size_t));
42-
std::memcpy(temp, ptr, old_size);
43+
size_t copy_size = (old_size < new_size)? old_size : new_size;
44+
std::memcpy(temp, ptr, copy_size);
4345

4446
free(ptr);
4547
return temp;

0 commit comments

Comments
 (0)