aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--builtin.c4
-rw-r--r--pc/ChangeLog4
-rw-r--r--pc/Makefile.tst7
-rw-r--r--test/ChangeLog8
-rw-r--r--test/Makefile.am13
-rw-r--r--test/Makefile.in19
-rw-r--r--test/Maketests5
-rw-r--r--test/isarrayunset.awk1
-rw-r--r--test/isarrayunset.ok1
10 files changed, 56 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 09ec10e2..9355653c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_isarray): Check that tmp is Node_var
+ before calling DEREF. Thanks to Denis Shirokov
+ <cosmogen@gmail.com> for the report.
+
2018-01-15 Arnold D. Robbins <arnold@skeeve.com>
* NEWS: Small typo fix.
diff --git a/builtin.c b/builtin.c
index 54d202d6..6927205c 100644
--- a/builtin.c
+++ b/builtin.c
@@ -507,7 +507,9 @@ do_isarray(int nargs)
tmp = POP();
if (tmp->type != Node_var_array) {
ret = 0;
- DEREF(tmp);
+ // could be Node_var_new
+ if (tmp->type == Node_val)
+ DEREF(tmp);
}
return make_number((AWKNUM) ret);
}
diff --git a/pc/ChangeLog b/pc/ChangeLog
index 15a3e382..a007290e 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2018-01-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.tst: Sync against test/Makefile.in.
+
2018-01-10 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.tst: Initial sync against test/Makefile.in.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index b7622df8..982d1ce0 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -202,7 +202,7 @@ GAWK_EXT_TESTS = \
genpot gensub gensub2 gensub3 getlndir gnuops2 gnuops3 gnureops gsubind \
icasefs icasers id igncdym igncfs ignrcas2 ignrcas4 ignrcase incdupe \
incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 include include2 \
- indirectbuiltin indirectcall indirectcall2 intarray \
+ indirectbuiltin indirectcall indirectcall2 intarray isarrayunset \
lint lintexp lintindex lintint lintlength lintold lintset lintwarn \
mixed1 mktime manyfiles match1 match2 match3 mbstr1 mbstr2 muldimposix \
nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \
@@ -2755,6 +2755,11 @@ indirectcall2:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+isarrayunset:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
lint:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/ChangeLog b/test/ChangeLog
index eca4313a..abff2dd7 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,11 @@
+2018-01-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (charset-tests-all): Add punctuation in the message.
+ (charset-msg-start): Add fr_FR.UTF-8 to list of desired locales,
+ reformat the message.
+ (isarrayunset): New test.
+ * isarrayunset.awk, isarrayunset.ok: New files.
+
2018-01-15 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (nlstringtest): New test.
diff --git a/test/Makefile.am b/test/Makefile.am
index 81b36066..34d90782 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -557,6 +557,8 @@ EXTRA_DIST = \
intprec.ok \
iobug1.awk \
iobug1.ok \
+ isarrayunset.awk \
+ isarrayunset.ok \
jarebug.awk \
jarebug.in \
jarebug.ok \
@@ -1271,7 +1273,7 @@ GAWK_EXT_TESTS = \
genpot gensub gensub2 gensub3 getlndir gnuops2 gnuops3 gnureops gsubind \
icasefs icasers id igncdym igncfs ignrcas2 ignrcas4 ignrcase incdupe \
incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 include include2 \
- indirectbuiltin indirectcall indirectcall2 intarray \
+ indirectbuiltin indirectcall indirectcall2 intarray isarrayunset \
lint lintexp lintindex lintint lintlength lintold lintset lintwarn \
mixed1 mktime manyfiles match1 match2 match3 mbstr1 mbstr2 muldimposix \
nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \
@@ -1385,7 +1387,7 @@ charset-tests-all:
$(MAKE) charset-msg-start charset-tests charset-msg-end; \
else \
echo %%%%%%%%%% Inadequate locale support: skipping charset tests. ; \
- echo %%%%%%%%%% At least en_US.UTF-8 fr_FR.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are needed. ; \
+ echo %%%%%%%%%% At least en_US.UTF-8, fr_FR.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are needed. ; \
fi
charset-tests: $(LOCALE_CHARSET_TESTS)
@@ -1458,9 +1460,10 @@ charset-msg-start:
@echo "======== Starting tests that can vary based on character set or locale support ========"
@echo "**************************************************************************"
@echo "* Some or all of these tests may fail if you have inadequate or missing *"
- @echo "* locale support. At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are *"
- @echo "* needed. The el_GR.iso88597 is optional but helpful. However, if you *"
- @echo "* see this message, the Makefile thinks you have what you need ... *"
+ @echo "* locale support. At least en_US.UTF-8, fr_FR.UTF-8, ru_RU.UTF-8 and *"
+ @echo "* ja_JP.UTF-8 are needed. The el_GR.iso88597 is optional but helpful. *"
+ @echo "* However, if you see this message, the Makefile thinks you have what *"
+ @echo "* you need ... *"
@echo "**************************************************************************"
charset-msg-end:
diff --git a/test/Makefile.in b/test/Makefile.in
index e5676b51..f8b6e05d 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -815,6 +815,8 @@ EXTRA_DIST = \
intprec.ok \
iobug1.awk \
iobug1.ok \
+ isarrayunset.awk \
+ isarrayunset.ok \
jarebug.awk \
jarebug.in \
jarebug.ok \
@@ -974,6 +976,7 @@ EXTRA_DIST = \
nlstrina.ok \
nlstringtest.awk \
nlstringtest.ok \
+ nlstringtest.po \
fr \
noeffect.awk \
noeffect.ok \
@@ -1527,7 +1530,7 @@ GAWK_EXT_TESTS = \
genpot gensub gensub2 gensub3 getlndir gnuops2 gnuops3 gnureops gsubind \
icasefs icasers id igncdym igncfs ignrcas2 ignrcas4 ignrcase incdupe \
incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 include include2 \
- indirectbuiltin indirectcall indirectcall2 intarray \
+ indirectbuiltin indirectcall indirectcall2 intarray isarrayunset \
lint lintexp lintindex lintint lintlength lintold lintset lintwarn \
mixed1 mktime manyfiles match1 match2 match3 mbstr1 mbstr2 muldimposix \
nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \
@@ -1825,7 +1828,7 @@ charset-tests-all:
$(MAKE) charset-msg-start charset-tests charset-msg-end; \
else \
echo %%%%%%%%%% Inadequate locale support: skipping charset tests. ; \
- echo %%%%%%%%%% At least en_US.UTF-8 fr_FR.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are needed. ; \
+ echo %%%%%%%%%% At least en_US.UTF-8, fr_FR.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are needed. ; \
fi
charset-tests: $(LOCALE_CHARSET_TESTS)
@@ -1898,9 +1901,10 @@ charset-msg-start:
@echo "======== Starting tests that can vary based on character set or locale support ========"
@echo "**************************************************************************"
@echo "* Some or all of these tests may fail if you have inadequate or missing *"
- @echo "* locale support. At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are *"
- @echo "* needed. The el_GR.iso88597 is optional but helpful. However, if you *"
- @echo "* see this message, the Makefile thinks you have what you need ... *"
+ @echo "* locale support. At least en_US.UTF-8, fr_FR.UTF-8, ru_RU.UTF-8 and *"
+ @echo "* ja_JP.UTF-8 are needed. The el_GR.iso88597 is optional but helpful. *"
+ @echo "* However, if you see this message, the Makefile thinks you have what *"
+ @echo "* you need ... *"
@echo "**************************************************************************"
charset-msg-end:
@@ -4230,6 +4234,11 @@ indirectcall2:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+isarrayunset:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
lint:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 6a685101..314aaaec 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1327,6 +1327,11 @@ indirectcall2:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+isarrayunset:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
lint:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/isarrayunset.awk b/test/isarrayunset.awk
new file mode 100644
index 00000000..8b54cdca
--- /dev/null
+++ b/test/isarrayunset.awk
@@ -0,0 +1 @@
+BEGIN { print isarray(a) }
diff --git a/test/isarrayunset.ok b/test/isarrayunset.ok
new file mode 100644
index 00000000..573541ac
--- /dev/null
+++ b/test/isarrayunset.ok
@@ -0,0 +1 @@
+0