This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regcomp.c: generate folded for EXACTF and EXACTFU
[perl5.git] / regcomp.c
index 579dabe..40d08e9 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -10702,8 +10702,14 @@ parseit:
            else {
                op = EXACT;
            }
-       }   /* else 2 chars in the bit map: the folds of each other */
-       else if (AT_LEAST_UNI_SEMANTICS || !isASCII(value)) {
+       }
+       else {   /* else 2 chars in the bit map: the folds of each other */
+
+           /* Use the folded value, which for the cases where we get here,
+            * is just the lower case of the current one (which may resolve to
+            * itself, or to the other one */
+           value = toLOWER_LATIN1(value);
+           if (AT_LEAST_UNI_SEMANTICS || !isASCII(value)) {
 
            /* To join adjacent nodes, they must be the exact EXACTish type.
             * Try to use the most likely type, by using EXACTFU if the regex
@@ -10714,6 +10720,7 @@ parseit:
        else {    /* Otherwise, more likely to be EXACTF type */
            op = EXACTF;
        }
+       }
 
        ret = reg_node(pRExC_state, op);
         RExC_parse = (char *)cur_parse;