summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2022-05-24 16:55:55 -0400
committerArnold D. Robbins <arnold@skeeve.com>2022-05-24 16:55:55 -0400
commitcb0ea690a0d82a06410da984c83a4881b8793e9d (patch)
tree445056d2bdbf95b0f9225386af2b0d84ba9825c7
parent93d37eb5ceb619985258f61fc2f63640624b0a33 (diff)
parent09eaaaf6608e63813087fb746d2bf2b1701d9e81 (diff)
downloadgawk-cb0ea690a0d82a06410da984c83a4881b8793e9d.tar.gz
Merge branch 'gawk-5.1-stable'
-rw-r--r--ChangeLog6
-rw-r--r--awkgram.c5
-rw-r--r--awkgram.y4
-rw-r--r--pc/ChangeLog4
-rw-r--r--pc/Makefile.tst7
-rw-r--r--test/ChangeLog5
-rw-r--r--test/Makefile.am4
-rw-r--r--test/Makefile.in9
-rw-r--r--test/Maketests5
-rw-r--r--test/getlnfa.awk1
-rw-r--r--test/getlnfa.ok3
11 files changed, 49 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index e2f12faf..33eb45b1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2022-05-24 Adam Van Scyoc <avanscy@g.clemson.edu>
+
+ * awkgram.y (make_assignable): Handle Op_field_assign.
+ Avoids a core dump upon a certain kind of syntax error;
+ see test/getlnfa.awk.
+
2022-05-11 Arnold D. Robbins <arnold@skeeve.com>
* profile.c (pp_list): Typo fix in a comment.
diff --git a/awkgram.c b/awkgram.c
index 7946374e..a3197dbe 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -7907,6 +7907,10 @@ make_assignable(INSTRUCTION *ip)
case Op_subscript:
ip->opcode = Op_subscript_lhs;
return ip;
+ case Op_field_assign:
+ // no need to change the opcode, but do need to return
+ // a non-NULL pointer.
+ return ip;
default:
break; /* keeps gcc -Wall happy */
}
@@ -9184,7 +9188,6 @@ merge_comments(INSTRUCTION *c1, INSTRUCTION *c2)
}
if (c2 != NULL) {
- // strcat(buffer, "\n");
strcat(buffer, c2->memory->stptr);
if (c2->comment != NULL) {
strcat(buffer, "\n");
diff --git a/awkgram.y b/awkgram.y
index b2ea325c..be0fdeb8 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -5399,6 +5399,10 @@ make_assignable(INSTRUCTION *ip)
case Op_subscript:
ip->opcode = Op_subscript_lhs;
return ip;
+ case Op_field_assign:
+ // no need to change the opcode, but do need to return
+ // a non-NULL pointer.
+ return ip;
default:
break; /* keeps gcc -Wall happy */
}
diff --git a/pc/ChangeLog b/pc/ChangeLog
index b1af1ca2..e012e4b3 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2022-05-24 Adam Van Scyoc <avanscy@g.clemson.edu>
+
+ * Makefile.tst: Regenerated.
+
2022-05-03 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.tst.prologue: Add GAWK_NO_MPFR_WARN=1.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index e5ca6d9a..f15edec4 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -155,7 +155,7 @@ BASIC_TESTS = \
fldchgnf fldterm fnamedat fnarray fnarray2 fnaryscl fnasgnm \
fnmisc fordel forref forsimp fsbs fscaret fsnul1 fsrs fsspcoln \
fstabplus funsemnl funsmnam funstack getline getline2 getline3 \
- getline4 getline5 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
+ getline4 getline5 getlnbuf getlnfa getnr2tb getnr2tm gsubasgn gsubtest \
gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 gsubtst8 \
hex hex2 hsprint inpref inputred intest intprec iobug1 leaddig \
leadnl litoct longsub longwrds manglprm math membug1 memleak \
@@ -2550,6 +2550,11 @@ getlnhd:
@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+getlnfa:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
localenl:
@echo $@
@-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/ChangeLog b/test/ChangeLog
index 6a5fa600..3f263224 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2022-05-24 Adam Van Scyoc <avanscy@g.clemson.edu>
+
+ * Makefile.am (EXTRA_DIST): getlnfa, new test.
+ * getlnfa.awk, getlnfa.ok: New files.
+
2022-05-03 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (AWK): Add GAWK_NO_MPFR_WARN=1 to the list.
diff --git a/test/Makefile.am b/test/Makefile.am
index af7f289f..fd73e646 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -488,6 +488,8 @@ EXTRA_DIST = \
getlnbuf.ok \
getlndir.awk \
getlndir.ok \
+ getlnfa.awk \
+ getlnfa.ok \
getlnhd.awk \
getlnhd.ok \
getnr2tb.awk \
@@ -1427,7 +1429,7 @@ BASIC_TESTS = \
fldchgnf fldterm fnamedat fnarray fnarray2 fnaryscl fnasgnm \
fnmisc fordel forref forsimp fsbs fscaret fsnul1 fsrs fsspcoln \
fstabplus funsemnl funsmnam funstack getline getline2 getline3 \
- getline4 getline5 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
+ getline4 getline5 getlnbuf getlnfa getnr2tb getnr2tm gsubasgn gsubtest \
gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 gsubtst8 \
hex hex2 hsprint inpref inputred intest intprec iobug1 leaddig \
leadnl litoct longsub longwrds manglprm math membug1 memleak \
diff --git a/test/Makefile.in b/test/Makefile.in
index 3f10d09d..7d0a7009 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -754,6 +754,8 @@ EXTRA_DIST = \
getlnbuf.ok \
getlndir.awk \
getlndir.ok \
+ getlnfa.awk \
+ getlnfa.ok \
getlnhd.awk \
getlnhd.ok \
getnr2tb.awk \
@@ -1693,7 +1695,7 @@ BASIC_TESTS = \
fldchgnf fldterm fnamedat fnarray fnarray2 fnaryscl fnasgnm \
fnmisc fordel forref forsimp fsbs fscaret fsnul1 fsrs fsspcoln \
fstabplus funsemnl funsmnam funstack getline getline2 getline3 \
- getline4 getline5 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
+ getline4 getline5 getlnbuf getlnfa getnr2tb getnr2tm gsubasgn gsubtest \
gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 gsubtst8 \
hex hex2 hsprint inpref inputred intest intprec iobug1 leaddig \
leadnl litoct longsub longwrds manglprm math membug1 memleak \
@@ -4263,6 +4265,11 @@ getlnhd:
@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+getlnfa:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
localenl:
@echo $@
@-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 7bf4f61a..aa54e782 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1283,6 +1283,11 @@ getlnhd:
@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+getlnfa:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
localenl:
@echo $@
@-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/getlnfa.awk b/test/getlnfa.awk
new file mode 100644
index 00000000..1e82d546
--- /dev/null
+++ b/test/getlnfa.awk
@@ -0,0 +1 @@
+getline $1+++++++
diff --git a/test/getlnfa.ok b/test/getlnfa.ok
new file mode 100644
index 00000000..416704e0
--- /dev/null
+++ b/test/getlnfa.ok
@@ -0,0 +1,3 @@
+gawk: getlnfa.awk:1: getline $1+++++++
+gawk: getlnfa.awk:1: ^ syntax error
+EXIT CODE: 1