Fix a leak and subsequent crash in parsetok.c caused by realloc misuse on a rare codepath.
Realloc returns a null pointer on failure, and then growable_comment_array_deallocate crashes later when it dereferences it.
--- /dev/null
+Fix a leak and subsequent crash in parsetok.c caused by realloc misuse on a rare codepath.
static int
growable_comment_array_add(growable_comment_array *arr, int lineno, char *comment) {
if (arr->num_items >= arr->size) {
- arr->size *= 2;
- arr->items = realloc(arr->items, arr->size * sizeof(*arr->items));
- if (!arr->items) {
+ size_t new_size = arr->size * 2;
+ void *new_items_array = realloc(arr->items, new_size * sizeof(*arr->items));
+ if (!new_items_array) {
return 0;
}
+ arr->items = new_items_array;
+ arr->size = new_size;
}
arr->items[arr->num_items].lineno = lineno;