summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorExplorer09 <explorer09@gmail.com>2017-07-09 16:22:28 +0800
committerWill Estes <westes575@gmail.com>2017-09-02 15:09:28 -0400
commitf2943389fd3ca776d25735c06ef94512a2bb5c20 (patch)
tree17a5e7a421814c8b1af536780cb9dc4fe2523905
parent71d3525ad21dde00d3665c61e27346e88dab30d9 (diff)
{re,}allocate_array code cleanup
-rw-r--r--src/misc.c45
1 files 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;
}