regcomp.c: Don't exceed array bounds
authorKarl Williamson <public@khwilliamson.com>
Tue, 24 Sep 2013 18:27:22 +0000 (12:27 -0600)
committerKarl Williamson <public@khwilliamson.com>
Tue, 24 Sep 2013 19:11:58 +0000 (13:11 -0600)
The upper limit of this loop was wrong.  It should be the number of
Posix classes that have space stored for them.  This caused a valgrind
error, but it's only when outputting a regular expression under, for
example,  -Dr

regcomp.c

index 7201082..036b934 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -15284,7 +15284,7 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o)
         /* output any special charclass tests (used entirely under use locale) */
        if (ANYOF_POSIXL_TEST_ANY_SET(o)) {
             int i;
-           for (i = 0; i < (int)(sizeof(anyofs)/sizeof(char*)); i++) {
+           for (i = 0; i < ANYOF_POSIXL_MAX; i++) {
                if (ANYOF_POSIXL_TEST(o,i)) {
                    sv_catpv(sv, anyofs[i]);
                    do_sep = 1;