diff options
author | Explorer09 <explorer09@gmail.com> | 2017-07-09 16:22:28 +0800 |
---|---|---|
committer | Will Estes <westes575@gmail.com> | 2017-09-02 15:09:28 -0400 |
commit | f2943389fd3ca776d25735c06ef94512a2bb5c20 (patch) | |
tree | 17a5e7a421814c8b1af536780cb9dc4fe2523905 | |
parent | 71d3525ad21dde00d3665c61e27346e88dab30d9 (diff) |
{re,}allocate_array code cleanup
-rw-r--r-- | src/misc.c | 45 |
1 files changed, 21 insertions, 24 deletions
@@ -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; } |