From b45dc512186c922ddd359508dcef96b25a62620f Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Wed, 30 Oct 2019 22:51:38 -0400 Subject: Preserve consumers ptr in realloc failure --- ring.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'ring.c') diff --git a/ring.c b/ring.c index 620f490..5fb9daa 100644 --- a/ring.c +++ b/ring.c @@ -67,11 +67,11 @@ size_t ringConsumer(const char *name) { if (consumers.len == consumers.cap) { consumers.cap = (consumers.cap ? consumers.cap * 2 : 8); - // FIXME: Keep old pointer around for saving when exiting for error. - consumers.ptr = realloc( + void *ptr = realloc( consumers.ptr, sizeof(*consumers.ptr) * consumers.cap ); - if (!consumers.ptr) err(EX_OSERR, "realloc"); + if (!ptr) err(EX_OSERR, "realloc"); + consumers.ptr = ptr; } struct Consumer *consumer = &consumers.ptr[consumers.len]; -- cgit 1.4.1