From 54a0fc3ecc34511bcba021bfedac10d965a3efe7 Mon Sep 17 00:00:00 2001 From: "Roberto E. Vargas Caballero" Date: Mon, 27 Nov 2023 08:32:24 +0100 Subject: [PATCH] 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. --- ed.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 ||