diff options
author | Tavian Barnes <tavianator@gmail.com> | 2010-04-07 14:26:15 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@gmail.com> | 2010-04-07 14:34:52 -0400 |
commit | 2b087cb45ae91f90492a935625570d7d42ee3ecb (patch) | |
tree | a464213b08d04c8c91c8879a84e534f895c84378 /libdimension/dimension/array.h | |
parent | 7d6663eeb68bf9d0a3dff86128827c0c1d85df69 (diff) | |
download | dimension-2b087cb45ae91f90492a935625570d7d42ee3ecb.tar.xz |
New dmnsn_malloc() function, and friends.
I'm tired of checking for malloc failures everywhere, considering it never
happens. So just bail out whenever it does. A lot of stuff is guaranteed
to succeed if it returns now.
Diffstat (limited to 'libdimension/dimension/array.h')
-rw-r--r-- | libdimension/dimension/array.h | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/libdimension/dimension/array.h b/libdimension/dimension/array.h index c1e28cd..a301de5 100644 --- a/libdimension/dimension/array.h +++ b/libdimension/dimension/array.h @@ -28,7 +28,7 @@ #define DIMENSION_ARRAY_H #include <pthread.h> /* For pthread_rwlock_t */ -#include <stdlib.h> /* For size_t, malloc */ +#include <stdlib.h> /* For size_t */ #include <string.h> /* For memcpy */ typedef struct { @@ -46,26 +46,17 @@ dmnsn_delete_array(dmnsn_array *array) } } -/* Array allocation never returns NULL - if dmnsn_new_array returns, it - succeeded */ +/* Array allocation */ DMNSN_INLINE dmnsn_array * dmnsn_new_array(size_t obj_size) { - dmnsn_array *array = (dmnsn_array *)malloc(sizeof(dmnsn_array)); - if (array) { - array->obj_size = obj_size; - array->length = 0; - array->capacity = 4; /* Start with capacity of 4 */ - - /* Allocate the memory */ - array->ptr = malloc(array->capacity*array->obj_size); - if (!array->ptr) { - dmnsn_delete_array(array); - dmnsn_error(DMNSN_SEVERITY_HIGH, "Array allocation failed."); - } - } else { - dmnsn_error(DMNSN_SEVERITY_HIGH, "Array allocation failed."); - } + dmnsn_array *array = (dmnsn_array *)dmnsn_malloc(sizeof(dmnsn_array)); + array->obj_size = obj_size; + array->length = 0; + array->capacity = 4; /* Start with capacity of 4 */ + + /* Allocate the memory */ + array->ptr = dmnsn_malloc(array->capacity*array->obj_size); return array; } @@ -84,10 +75,7 @@ dmnsn_array_resize(dmnsn_array *array, size_t length) if (length > array->capacity) { /* Resize if we don't have enough capacity */ array->capacity = length*2; /* We are greedy */ - array->ptr = realloc(array->ptr, array->obj_size*array->capacity); - if (!array->ptr) { - dmnsn_error(DMNSN_SEVERITY_HIGH, "Resizing array failed."); - } + array->ptr = dmnsn_realloc(array->ptr, array->obj_size*array->capacity); } array->length = length; |