aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2013-06-24 20:54:42 +0300
committerArnold D. Robbins <arnold@skeeve.com>2013-06-24 20:54:42 +0300
commitd18166bf5ba5c8ca75b57afc033ab3aa3aa5fc7b (patch)
treeaf79bfb696961e24ee87adec38b526c0e8cb6ef3
parent933b7cf6a59b1d44fa0ee839a4befafd9bca6e50 (diff)
parente50f9b883b4aa5d6ce7f9218f7dfba8b5686ee2a (diff)
downloadegawk-d18166bf5ba5c8ca75b57afc033ab3aa3aa5fc7b.tar.gz
egawk-d18166bf5ba5c8ca75b57afc033ab3aa3aa5fc7b.tar.bz2
egawk-d18166bf5ba5c8ca75b57afc033ab3aa3aa5fc7b.zip
Merge branch 'gawk-4.1-stable'
-rw-r--r--ChangeLog8
-rw-r--r--dfa.c13
-rw-r--r--test/ChangeLog7
-rw-r--r--test/Makefile.am5
-rw-r--r--test/Makefile.in10
-rw-r--r--test/Maketests5
6 files changed, 30 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index ea96384d..33f2d317 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-06-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (copytoks): Rewrite to call addtok_mb() directly. Avoids
+ problems with multibyte characters inside character sets.
+ Thanks to Steven Daniels <stevendaniels88@gmail.com> for reporting
+ the problem. Much thanks to Mike Haertel <mike@ducky.net> for the
+ analysis and fix.
+
2013-06-24 Eli Zaretskii <eliz@gnu.org>
* io.c: Move #include "popen.h" out of the HAVE_SOCKETS condition,
diff --git a/dfa.c b/dfa.c
index 54e0ae9d..2195e281 100644
--- a/dfa.c
+++ b/dfa.c
@@ -1847,13 +1847,12 @@ copytoks (size_t tindex, size_t ntokens)
{
size_t i;
- for (i = 0; i < ntokens; ++i)
- {
- addtok (dfa->tokens[tindex + i]);
- /* Update index into multibyte csets. */
- if (MB_CUR_MAX > 1 && dfa->tokens[tindex + i] == MBCSET)
- dfa->multibyte_prop[dfa->tindex - 1] = dfa->multibyte_prop[tindex + i];
- }
+ if (MB_CUR_MAX > 1)
+ for (i = 0; i < ntokens; ++i)
+ addtok_mb(dfa->tokens[tindex + i], dfa->multibyte_prop[tindex + i]);
+ else
+ for (i = 0; i < ntokens; ++i)
+ addtok_mb(dfa->tokens[tindex + i], 3);
}
static void
diff --git a/test/ChangeLog b/test/ChangeLog
index b3f87073..2eada5aa 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,4 +1,9 @@
-2013-06-22 Eli Zaretskii <eliz@gnu.org>
+2013-06-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (clos1way): Move to here since Maketests gets
+ regenerated whenever Makefile.am is touched.
+
+2013-06-22 Eli Zaretskii <eliz@gnu.org>
* Maketests (clos1way): Set AC_ALL=C, since clos1way.awk no longer
does.
diff --git a/test/Makefile.am b/test/Makefile.am
index decb35c3..fb73a76f 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1833,6 +1833,11 @@ colonwarn:
done > _$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+clos1way:
+ @echo $@
+ @AWKPATH=$(srcdir) LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
# Targets generated for other tests:
include Maketests
diff --git a/test/Makefile.in b/test/Makefile.in
index ecdc0fd0..5bb3e201 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -2226,6 +2226,11 @@ colonwarn:
do $(AWK) -f $(srcdir)/$@.awk $$i < $(srcdir)/$@.in ; \
done > _$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+clos1way:
+ @echo $@
+ @AWKPATH=$(srcdir) LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
@@ -3160,11 +3165,6 @@ backw:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-clos1way:
- @echo $@
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
delsub:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 7ffbd13f..27b8749e 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -932,11 +932,6 @@ backw:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-clos1way:
- @echo $@
- @AWKPATH=$(srcdir) LC_ALL=C $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
delsub:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@