diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2020-06-08 22:18:07 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2020-06-08 22:18:07 +0300 |
commit | 4fdd2362ad9c9a215da4b4a9f2c96b15a5d5d881 (patch) | |
tree | d93801c7b75ee563824435d406c491a09f11e3a5 | |
parent | a950f833d18938c0e2bb9599670eb3eb50f491c0 (diff) | |
download | egawk-4fdd2362ad9c9a215da4b4a9f2c96b15a5d5d881.tar.gz egawk-4fdd2362ad9c9a215da4b4a9f2c96b15a5d5d881.tar.bz2 egawk-4fdd2362ad9c9a215da4b4a9f2c96b15a5d5d881.zip |
Fix ` print $"2" ' case.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | awkgram.c | 2 | ||||
-rw-r--r-- | awkgram.y | 2 | ||||
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/Makefile.am | 6 | ||||
-rw-r--r-- | test/Makefile.in | 11 | ||||
-rw-r--r-- | test/Maketests | 5 | ||||
-rw-r--r-- | test/strfieldnum.awk | 1 | ||||
-rw-r--r-- | test/strfieldnum.in | 1 | ||||
-rw-r--r-- | test/strfieldnum.ok | 1 |
10 files changed, 35 insertions, 4 deletions
@@ -1,3 +1,8 @@ +2020-06-08 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y: Fix `print $"2"' case. Thanks to Ed Morton + Morton <mortoneccc@comcast.net> for the report. + 2020-06-05 Arnold D. Robbins <arnold@skeeve.com> * awkgram.y: Allow @/foo/ as return expression in a function. @@ -3071,7 +3071,7 @@ regular_loop: if (yyvsp[-1] != NULL) { NODE *n = yyvsp[-1]->nexti->nexti->memory; - if (! iszero(n)) + if ((n->flags & (STRING|STRCUR)) != 0 || ! iszero(n)) goto regular_print; bcfree(yyvsp[-1]->lasti); /* Op_field_spec */ @@ -1154,7 +1154,7 @@ simple_stmt if ($3 != NULL) { NODE *n = $3->nexti->nexti->memory; - if (! iszero(n)) + if ((n->flags & (STRING|STRCUR)) != 0 || ! iszero(n)) goto regular_print; bcfree($3->lasti); /* Op_field_spec */ diff --git a/test/ChangeLog b/test/ChangeLog index 097f19bd..cca09eb6 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,8 @@ +2020-06-08 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (EXTRA_DIST): New test, strfieldnum. + * strfieldnum.awk, strfieldnum.in, strfieldnum.ok: New files. + 2020-05-06 Arnold D. Robbins <arnold@skeeve.com> * Makefile.am (EXTRA_DIST): New test, lintplus. diff --git a/test/Makefile.am b/test/Makefile.am index 55b1ff34..3c241aae 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1165,6 +1165,9 @@ EXTRA_DIST = \ status-close.ok \ strcat1.awk \ strcat1.ok \ + strfieldnum.awk \ + strfieldnum.in \ + strfieldnum.ok \ strftime.awk \ strftlng.awk \ strftlng.ok \ @@ -1371,7 +1374,8 @@ BASIC_TESTS = \ rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \ scalar sclforin sclifin setrec0 setrec1 \ sigpipe1 sortempty sortglos spacere splitargv splitarr \ - splitdef splitvar splitwht status-close strcat1 strnum1 strnum2 strtod \ + splitdef splitvar splitwht status-close \ + strcat1 strfieldnum strnum1 strnum2 strtod \ subamp subback subi18n subsepnm subslash substr swaplns synerr1 synerr2 synerr3 \ tailrecurse tradanch trailbs tweakfld \ uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs uplus \ diff --git a/test/Makefile.in b/test/Makefile.in index dd1f8316..b774c549 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -1428,6 +1428,9 @@ EXTRA_DIST = \ status-close.ok \ strcat1.awk \ strcat1.ok \ + strfieldnum.awk \ + strfieldnum.in \ + strfieldnum.ok \ strftime.awk \ strftlng.awk \ strftlng.ok \ @@ -1634,7 +1637,8 @@ BASIC_TESTS = \ rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \ scalar sclforin sclifin setrec0 setrec1 \ sigpipe1 sortempty sortglos spacere splitargv splitarr \ - splitdef splitvar splitwht status-close strcat1 strnum1 strnum2 strtod \ + splitdef splitvar splitwht status-close \ + strcat1 strfieldnum strnum1 strnum2 strtod \ subamp subback subi18n subsepnm subslash substr swaplns synerr1 synerr2 synerr3 \ tailrecurse tradanch trailbs tweakfld \ uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs uplus \ @@ -3932,6 +3936,11 @@ strcat1: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +strfieldnum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + strnum1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index 4bee1ddc..a59771a8 100644 --- a/test/Maketests +++ b/test/Maketests @@ -1062,6 +1062,11 @@ strcat1: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +strfieldnum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + strnum1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/strfieldnum.awk b/test/strfieldnum.awk new file mode 100644 index 00000000..053033c6 --- /dev/null +++ b/test/strfieldnum.awk @@ -0,0 +1 @@ +{ print $"2" } diff --git a/test/strfieldnum.in b/test/strfieldnum.in new file mode 100644 index 00000000..3774da60 --- /dev/null +++ b/test/strfieldnum.in @@ -0,0 +1 @@ +a b c diff --git a/test/strfieldnum.ok b/test/strfieldnum.ok new file mode 100644 index 00000000..61780798 --- /dev/null +++ b/test/strfieldnum.ok @@ -0,0 +1 @@ +b |