1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-12-22 07:48:50 -05:00

pacsort: don't overwrite memory if realloc fails

That makes it impossible to free it later.

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Rikard Falkeborn 2015-08-10 21:42:38 +02:00 committed by Allan McRae
parent 19d373c9b9
commit aa8a674b6b

View File

@ -104,10 +104,11 @@ static void buffer_free(struct buffer_t *buf)
static int buffer_grow(struct buffer_t *buffer) static int buffer_grow(struct buffer_t *buffer)
{ {
size_t newsz = buffer->maxlen * 2.5; size_t newsz = buffer->maxlen * 2.5;
buffer->mem = realloc(buffer->mem, newsz * sizeof(char)); char* new_mem = realloc(buffer->mem, newsz * sizeof(char));
if(!buffer->mem) { if(!new_mem) {
return 1; return 1;
} }
buffer->mem = new_mem;
buffer->maxlen = newsz; buffer->maxlen = newsz;
return 0; return 0;
@ -136,11 +137,12 @@ static struct list_t *list_new(size_t initial_size)
static int list_grow(struct list_t *list) static int list_grow(struct list_t *list)
{ {
size_t newsz = list->maxcount * 2.5; size_t newsz = list->maxcount * 2.5;
list->list = realloc(list->list, newsz * sizeof(char *)); void **new_list = realloc(list->list, newsz * sizeof(char *));
if(!list->list) { if(!new_list) {
return 1; return 1;
} }
list->list = new_list;
list->maxcount = newsz; list->maxcount = newsz;
return 0; return 0;