From 3e9fc32fc3d6ac4931f82d666fa4f2f52ac5f65b Mon Sep 17 00:00:00 2001
From: Peter Stephenson
Date: Tue, 10 Jul 2018 14:42:02 +0100
Subject: 43156, 43157: Need to allow for extra space in gethere().
The point can now increment twice per iteration.
---
ChangeLog | 5 +++++
Src/exec.c | 8 +++++---
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index babd2321e..6e17484aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-10 Peter Stephenson
+
+ * 43156, 43157: Src/exec.c: need to allow for possible
+ update of pointer by two in gethere().
+
2018-07-09 Peter Stephenson
* users/23531: Src/exec.c, Test/C03traps.ztst: Fix error
diff --git a/Src/exec.c b/Src/exec.c
index 586402070..615a5086f 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -4418,7 +4418,9 @@ gethere(char **strp, int typ)
while ((c = hgetc()) == '\t' && strip)
;
for (;;) {
- if (bptr == buf + bsiz) {
+ if (bptr >= buf + bsiz - 2) {
+ ptrdiff_t toff = t - buf;
+ ptrdiff_t bptroff = bptr - buf;
char *newbuf = realloc(buf, 2 * bsiz);
if (!newbuf) {
/* out of memory */
@@ -4426,8 +4428,8 @@ gethere(char **strp, int typ)
return NULL;
}
buf = newbuf;
- t = buf + bsiz - (bptr - t);
- bptr = buf + bsiz;
+ t = buf + toff;
+ bptr = buf + bptroff;
bsiz *= 2;
}
if (lexstop || c == '\n')
--
cgit 1.4.1