#include #include #include void *kai_expand_array(void **array, size_t *count, size_t element_size) { size_t new_count = *count + 1; size_t new_size = element_size * new_count; /* cast to uint8_t so we can do pointer arithmetic */ uint8_t *new_array = realloc(*array, new_size); if (new_array == NULL) { fprintf(stderr, "[kalmia] ERROR: failed to add %ul bytes to %ul-byte array!\n", element_size, element_size * *count); return NULL; } void *new_element = new_array + (*count * element_size); *array = new_array; *count = new_count; return new_element; }