commit f45156d5b4f49ada1c130168a2aabdcb02f430a4 Author: Roberto E. Vargas Caballero <k...@shike2.com> AuthorDate: Tue Mar 6 14:38:23 2018 +0100 Commit: sin <s...@2f30.org> CommitDate: Tue Jul 3 09:31:46 2018 +0100
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. 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;