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;

Reply via email to