summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2018-07-13 00:46:08 -0500
committerPaul Eggert <eggert@cs.ucla.edu>2018-07-13 00:46:38 -0500
commit5b78831df03b49408676227604cf16f90dee07ac (patch)
tree852b7bb53fea71fd64ca75226be749424348ce79
parentdec70162eedff40067f92a15ae60b3649064591b (diff)
downloadgnulib-5b78831df03b49408676227604cf16f90dee07ac.tar.gz
autoupdate
-rwxr-xr-xbuild-aux/config.sub6
-rw-r--r--lib/regexec.c43
2 files changed, 22 insertions, 27 deletions
diff --git a/build-aux/config.sub b/build-aux/config.sub
index c95acc681d..64f9b14b55 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -2,7 +2,7 @@
# Configuration validation subroutine script.
# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2018-07-03'
+timestamp='2018-07-13'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -739,6 +739,7 @@ case $basic_machine in
| mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
+ | moxie-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
@@ -1263,9 +1264,6 @@ case $basic_machine in
pmac | pmac-mpw)
basic_machine=powerpc-apple
;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
*)
echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1
diff --git a/lib/regexec.c b/lib/regexec.c
index 63aef97535..73644c2341 100644
--- a/lib/regexec.c
+++ b/lib/regexec.c
@@ -3878,30 +3878,27 @@ check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
indirect = (const int32_t *)
_NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB);
int32_t idx = findidx (table, indirect, extra, &cp, elem_len);
+ int32_t rule = idx >> 24;
+ idx &= 0xffffff;
if (idx > 0)
- for (i = 0; i < cset->nequiv_classes; ++i)
- {
- int32_t equiv_class_idx = cset->equiv_classes[i];
- size_t weight_len = weights[idx & 0xffffff];
- if (weight_len == weights[equiv_class_idx & 0xffffff]
- && (idx >> 24) == (equiv_class_idx >> 24))
- {
- Idx cnt = 0;
-
- idx &= 0xffffff;
- equiv_class_idx &= 0xffffff;
-
- while (cnt <= weight_len
- && (weights[equiv_class_idx + 1 + cnt]
- == weights[idx + 1 + cnt]))
- ++cnt;
- if (cnt > weight_len)
- {
- match_len = elem_len;
- goto check_node_accept_bytes_match;
- }
- }
- }
+ {
+ size_t weight_len = weights[idx];
+ for (i = 0; i < cset->nequiv_classes; ++i)
+ {
+ int32_t equiv_class_idx = cset->equiv_classes[i];
+ int32_t equiv_class_rule = equiv_class_idx >> 24;
+ equiv_class_idx &= 0xffffff;
+ if (weights[equiv_class_idx] == weight_len
+ && equiv_class_rule == rule
+ && memcmp (weights + idx + 1,
+ weights + equiv_class_idx + 1,
+ weight_len) == 0)
+ {
+ match_len = elem_len;
+ goto check_node_accept_bytes_match;
+ }
+ }
+ }
}
}
else