From 18f2cbf0d59c8828e9220f2a01c69bed8f450529 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 9 May 2022 07:08:16 -0700 Subject: Avoid unnecessary realloc in resizebuf. --- pw.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'pw.c') diff --git a/pw.c b/pw.c index acac723..6c36a90 100644 --- a/pw.c +++ b/pw.c @@ -1048,13 +1048,14 @@ static void sigwinch(int sig) static char **resizebuf(char **buf, size_t nlfrom, size_t nlto) { - if (nlfrom > nlto) + if (nlfrom > nlto) { for (size_t i = nlto; i < nlfrom; i++) dsdrop(buf[i]); - if ((buf = realloc(buf, sizeof *buf * nlto)) == 0) - panic("out of memory"); - if (nlfrom < nlto) + } else if (nlfrom < nlto) { + if ((buf = realloc(buf, sizeof *buf * nlto)) == 0) + panic("out of memory"); memset(buf + nlfrom, 0, (nlto - nlfrom) * sizeof *buf); + } return buf; } -- cgit v1.2.3