From f2943389fd3ca776d25735c06ef94512a2bb5c20 Mon Sep 17 00:00:00 2001 From: Explorer09 Date: Sun, 9 Jul 2017 16:22:28 +0800 Subject: {re,}allocate_array code cleanup --- src/misc.c | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/src/misc.c b/src/misc.c index 9ead263..fa33a5b 100644 --- a/src/misc.c +++ b/src/misc.c @@ -141,27 +141,24 @@ void add_action (const char *new_text) void *allocate_array (int size, size_t element_size) { - void *mem; + void *new_array; #if HAVE_REALLOCARR - mem = NULL; - if (reallocarr(&mem, (size_t) size, element_size)) - flexfatal (_ - ("memory allocation failed in allocate_array()")); - - return mem; -#elif HAVE_REALLOCARRAY - /* reallocarray has built-in overflow detection */ - mem = reallocarray(NULL, (size_t) size, element_size); + new_array = NULL; + if (reallocarr(&new_array, (size_t) size, element_size)) + flexfatal (_("memory allocation failed in allocate_array()")); #else +# if HAVE_REALLOCARRAY + new_array = reallocarray(NULL, (size_t) size, element_size); +# else + /* Do manual overflow detection */ size_t num_bytes = (size_t) size * element_size; - mem = (size && SIZE_MAX / (size_t) size < element_size) ? NULL : + new_array = (size && SIZE_MAX / (size_t) size < element_size) ? NULL : malloc(num_bytes); +# endif + if (!new_array) + flexfatal (_("memory allocation failed in allocate_array()")); #endif - if (!mem) - flexfatal (_ - ("memory allocation failed in allocate_array()")); - - return mem; + return new_array; } @@ -667,21 +664,21 @@ void *reallocate_array (void *array, int size, size_t element_size) { void *new_array; #if HAVE_REALLOCARR - if (reallocarr(&array, (size_t) size, element_size)) + new_array = array; + if (reallocarr(&new_array, (size_t) size, element_size)) flexfatal (_("attempt to increase array size failed")); - - return array; -#elif HAVE_REALLOCARRAY - /* reallocarray has built-in overflow detection */ - new_array = reallocarray(array, (size_t) size, element_size); #else +# if HAVE_REALLOCARRAY + new_array = reallocarray(array, (size_t) size, element_size); +# else + /* Do manual overflow detection */ size_t num_bytes = (size_t) size * element_size; new_array = (size && SIZE_MAX / (size_t) size < element_size) ? NULL : realloc(array, num_bytes); -#endif +# endif if (!new_array) flexfatal (_("attempt to increase array size failed")); - +#endif return new_array; } -- cgit v1.2.3