regcomp.c: Fix upper loop limit
authorKarl Williamson <public@khwilliamson.com>
Tue, 1 Jan 2013 05:38:37 +0000 (22:38 -0700)
committerKarl Williamson <public@khwilliamson.com>
Tue, 1 Jan 2013 05:42:04 +0000 (22:42 -0700)
The upper limit test for this loop should be strictly less than, like
all other instances in the code for similar loops.  The class at
ANYOF_MAX is \v, which is not subject to locale rules, and this loop is
testing for which locale rule classes have been set.  Thus the loop
should not include \v.

Thanks to George Greer for spotting this.

regcomp.c

index 29a0469..a6090ed 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -794,7 +794,7 @@ S_cl_is_anything(const struct regnode_charclass_class *cl)
 
     PERL_ARGS_ASSERT_CL_IS_ANYTHING;
 
-    for (value = 0; value <= ANYOF_MAX; value += 2)
+    for (value = 0; value < ANYOF_MAX; value += 2)
        if (ANYOF_CLASS_TEST(cl, value) && ANYOF_CLASS_TEST(cl, value + 1))
            return 1;
     if (!(cl->flags & ANYOF_UNICODE_ALL))