From f45156d5b4f49ada1c130168a2aabdcb02f430a4 Mon Sep 17 00:00:00 2001 From: "Roberto E. Vargas Caballero" Date: Tue, 6 Mar 2018 14:38:23 +0100 Subject: [PATCH] Simplify expression in makeline() This expression was wrong, but it was causing a false positive in some compilers that couldn't see that error() cannot return. The actual problem of the line is that it was too complex and it is better to split it in simplex expressions. --- ed.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ed.c b/ed.c index 29f4b92..a434625 100644 --- a/ed.c +++ b/ed.c @@ -192,8 +192,10 @@ makeline(char *s, int *off) char c, *begin = s; if (lastidx >= idxsize) { - if (idxsize > SIZE_MAX - NUMLINES || - !(lp = realloc(zero, (idxsize + NUMLINES) * sizeof(*lp)))) + lp = NULL; + if (idxsize <= SIZE_MAX - NUMLINES) + lp = realloc(zero, (idxsize + NUMLINES) * sizeof(*lp)); + if (!lp) error("out of memory"); idxsize += NUMLINES; zero = lp;