diff options
-rw-r--r-- | globvar.sym | 1 | ||||
-rw-r--r-- | regcomp.c | 11 | ||||
-rw-r--r-- | t/porting/globvar.t | 2 |
3 files changed, 11 insertions, 3 deletions
diff --git a/globvar.sym b/globvar.sym index a8067e5a69..93eca43ea1 100644 --- a/globvar.sym +++ b/globvar.sym @@ -18,6 +18,7 @@ hexdigit interp_size interp_size_5_16_0 keyword_plugin +latin1_lc magic_data magic_vtable_names magic_vtables @@ -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; diff --git a/t/porting/globvar.t b/t/porting/globvar.t index aa266959c2..795673b49a 100644 --- a/t/porting/globvar.t +++ b/t/porting/globvar.t @@ -14,7 +14,7 @@ skip_all("Code to read symbols not ported to $^O") my %skip = map { ("PL_$_", 1) } qw( DBcv bitcount cshname force_link_funcs generation lastgotoprobe - latin1_lc mod_latin1_uc modcount no_symref_sv timesbuf uudmap + mod_latin1_uc modcount no_symref_sv timesbuf uudmap watchaddr watchok warn_uninit_sv ); |