From cf8f962e4fc9a0cf6ad62b811dc519c71d1bcd51 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Sun, 5 Jan 2020 07:21:15 +0100 Subject: [PATCH] Handle realloc() failures better Signed-off-by: Joachim Nilsson --- src/editline.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/editline.c b/src/editline.c index b9f6ba3..c3db0ef 100644 --- a/src/editline.c +++ b/src/editline.c @@ -178,8 +178,12 @@ static void tty_put(const char c) Screen[ScreenCount] = c; if (++ScreenCount >= ScreenSize) { + char *ptr; + ScreenSize += SCREEN_INC; - Screen = realloc(Screen, sizeof(char) * ScreenSize); + ptr = realloc(Screen, sizeof(char) * ScreenSize); + if (ptr) + Screen = ptr; } } @@ -1281,9 +1285,12 @@ static char *read_redirected(void) int oldpos = end - line; size += MEM_INC; - p = line = realloc(line, sizeof(char) * size); - if (!p) + p = realloc(line, sizeof(char) * size); + if (!p) { + free(line); return NULL; + } + line = p; end = p + size; p += oldpos; /* Continue where we left off... */