From 16eeae36d719a8499107924c2e24b3c84feee579 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 7 Aug 2021 15:05:46 +0100 Subject: Inline heap_allocator resize logic on *nix platforms --- src/array.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/array.cpp') diff --git a/src/array.cpp b/src/array.cpp index 3e37aa7af..ad0efcd74 100644 --- a/src/array.cpp +++ b/src/array.cpp @@ -326,18 +326,17 @@ void array_set_capacity(Array *array, isize capacity) { array_resize(array, capacity); } - T *new_data = nullptr; -#if 0 - // NOTE(bill): try gb_resize_align first, and then fallback to alloc+memmove+free isize old_size = array->capacity * gb_size_of(T); isize new_size = capacity * gb_size_of(T); + T *new_data = nullptr; + + // NOTE(bill): try gb_resize_align first, and then fallback to alloc+memmove+free new_data = cast(T *)gb_resize_align(array->allocator, array->data, old_size, new_size, gb_align_of(T)); -#endif if (new_data == nullptr) { if (capacity > 0) { new_data = gb_alloc_array(array->allocator, T, capacity); GB_ASSERT(new_data != nullptr); - gb_memmove(new_data, array->data, gb_size_of(T) * array->capacity); + gb_memmove(new_data, array->data, old_size); } gb_free(array->allocator, array->data); } -- cgit v1.2.3