shithub: trueawk

Download patch

ref: ee5b49bb3307e70054299a00d6c3308996049ce2
parent: cc19af1308fadaad9ff1611155c666cd48cfe32b
author: Tim van der Molen <58601421+tbvdm@users.noreply.github.com>
date: Thu Jul 2 16:22:15 EDT 2020

Fix regression with changed SUBSEP in subscript (#86)

Commit 0d8778bbbb415810bfd126694a38b6bf4b71e79c reintroduced a
regression that was fixed in commit
97a4b7ed215ae6446d13fe0eab15b5b3ae4da7da. The length of SUBSEP needs to
be rechecked after calling execute(), in case SUBSEP itself has been
changed.

Co-authored-by: Tim van der Molen <tim@kariliq.nl>

--- a/run.c
+++ b/run.c
@@ -472,7 +472,7 @@
 {
 	char *buf;
 	int bufsz = recsize;
-	size_t blen, seplen;
+	size_t blen;
 
 	if ((buf = malloc(bufsz)) == NULL) {
 		FATAL("%s: out of memory", func);
@@ -480,11 +480,11 @@
 
 	blen = 0;
 	buf[blen] = '\0';
-	seplen = strlen(getsval(subseploc));
 
 	for (; p; p = p->nnext) {
 		Cell *x = execute(p);	/* expr */
 		char *s = getsval(x);
+		size_t seplen = strlen(getsval(subseploc));
 		size_t nsub = p->nnext ? seplen : 0;
 		size_t slen = strlen(s);
 		size_t tlen = blen + slen + nsub;
--