diff --git a/src/realloc.cpp b/src/realloc.cpp index c580de5..7820244 100644 --- a/src/realloc.cpp +++ b/src/realloc.cpp @@ -5,9 +5,26 @@ namespace mem void* realloc(void* ptr, size_t new_size) { - (void)ptr; - (void)new_size; - return nullptr; + if (ptr == nullptr) + { + return malloc(new_size); + } + + if (new_size == 0) + { + free(ptr); + return nullptr; + } + + void* new_ptr = malloc(new_size); + if (new_ptr == nullptr) + { + return nullptr; + } + + free(ptr); + + return new_ptr; } } // namespace mem diff --git a/tests/unit/test_realloc.cpp b/tests/unit/test_realloc.cpp new file mode 100644 index 0000000..dce71a6 --- /dev/null +++ b/tests/unit/test_realloc.cpp @@ -0,0 +1,10 @@ +#include "malloc_from_scratch/memory_allocator.h" +#include "test_utils.h" + +int main() +{ + void* null_ptr = mem::realloc(nullptr, 64); + ASSERT_NOT_NULL(null_ptr); + + TEST_PASS(); +}