[fix] handle cstring_array_from_char_array where char_array is NULL or 0-length
This commit is contained in:
@@ -711,16 +711,17 @@ cstring_array *cstring_array_new_size(size_t size) {
|
|||||||
|
|
||||||
cstring_array *cstring_array_from_char_array(char_array *str) {
|
cstring_array *cstring_array_from_char_array(char_array *str) {
|
||||||
cstring_array *array = malloc(sizeof(cstring_array));
|
cstring_array *array = malloc(sizeof(cstring_array));
|
||||||
if (array == NULL) return NULL;
|
if (array == NULL || str == NULL) return NULL;
|
||||||
|
|
||||||
array->str = str;
|
array->str = str;
|
||||||
array->indices = uint32_array_new_size(1);
|
array->indices = uint32_array_new_size(1);
|
||||||
uint32_array_push(array->indices, 0);
|
uint32_array_push(array->indices, 0);
|
||||||
char *ptr = str->a;
|
char *ptr = str->a;
|
||||||
uint32_t i = 0;
|
if (str->n > 0) {
|
||||||
for (i = 0; i < str->n - 1; i++, ptr++) {
|
for (uint32_t i = 0; i < str->n - 1; i++, ptr++) {
|
||||||
if (*ptr == '\0') {
|
if (*ptr == '\0') {
|
||||||
uint32_array_push(array->indices, i + 1);
|
uint32_array_push(array->indices, i + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return array;
|
return array;
|
||||||
|
|||||||
Reference in New Issue
Block a user