commit 54a0fc3ecc34511bcba021bfedac10d965a3efe7
Author:     Roberto E. Vargas Caballero <k...@shike2.com>
AuthorDate: Mon Nov 27 08:32:24 2023 +0100
Commit:     Roberto E. Vargas Caballero <k...@shike2.com>
CommitDate: Thu Dec 28 17:14:04 2023 +0100

    ed: Fix makeline
    
    Strings without newlines created problems in the function
    and the global field was not updated, making that new lines
    added were marked as global being processed in the current
    global command.

diff --git a/ed.c b/ed.c
index a8bc7d5..b6f4f1c 100644
--- a/ed.c
+++ b/ed.c
@@ -185,19 +185,20 @@ makeline(char *s, int *off)
        if (lastidx >= idxsize) {
                lp = NULL;
                if (idxsize <= SIZE_MAX - NUMLINES)
-                   lp = reallocarray(zero, idxsize + NUMLINES, sizeof(*lp));
+                       lp = reallocarray(zero, idxsize + NUMLINES, 
sizeof(*lp));
                if (!lp)
                        error("out of memory");
                idxsize += NUMLINES;
                zero = lp;
        }
        lp = zero + lastidx;
+       lp->global = 0;
 
        if (!s) {
                lp->seek = -1;
                len = 0;
        } else {
-               while ((c = *s++) != '\n')
+               while ((c = *s++) && c != '\n')
                        /* nothing */;
                len = s - begin;
                if ((lp->seek = lseek(scratch, 0, SEEK_END)) < 0 ||

Reply via email to