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.
This commit is contained in:
Roberto E. Vargas Caballero 2023-11-27 08:32:24 +01:00
parent 09dc00f995
commit 54a0fc3ecc
1 changed files with 3 additions and 2 deletions

5
ed.c
View File

@ -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 ||