summaryrefslogtreecommitdiff
path: root/regcomp.c
diff options
context:
space:
mode:
authorKarl Williamson <public@khwilliamson.com>2010-10-20 13:21:04 -0600
committerFather Chrysostomos <sprout@cpan.org>2010-10-21 14:48:27 -0700
commit8cc86590c5aa026ef05d88e777ab02f3434e8415 (patch)
tree3757c3778bc80f788da4eaaa11f1a79742c64d8a /regcomp.c
parentf6e17a8494f84e70891cf58d8de1f22dbeac544c (diff)
downloadperl-8cc86590c5aa026ef05d88e777ab02f3434e8415.tar.gz
regcomp.c: /d not overriding /u
The setting of the charset regex modifiers was wrong. /d didn't override /u nor /l, and similarly /u and /l didn't properly override each other.
Diffstat (limited to 'regcomp.c')
-rw-r--r--regcomp.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/regcomp.c b/regcomp.c
index b5493f4eaf..831d579593 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -6238,16 +6238,16 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp,U32 depth)
if (has_charset_modifier || flagsp == &negflags) {
goto fail_modifiers;
}
- *flagsp &= ~RXf_PMf_UNICODE;
- *flagsp |= RXf_PMf_LOCALE;
+ posflags |= RXf_PMf_LOCALE;
+ negflags |= RXf_PMf_UNICODE;
has_charset_modifier = 1;
break;
case UNICODE_PAT_MOD:
if (has_charset_modifier || flagsp == &negflags) {
goto fail_modifiers;
}
- *flagsp &= ~RXf_PMf_LOCALE;
- *flagsp |= RXf_PMf_UNICODE;
+ posflags |= RXf_PMf_UNICODE;
+ negflags |= RXf_PMf_LOCALE;
has_charset_modifier = 1;
break;
case DUAL_PAT_MOD:
@@ -6257,7 +6257,7 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp,U32 depth)
{
goto fail_modifiers;
}
- *flagsp &= ~(RXf_PMf_LOCALE|RXf_PMf_UNICODE);
+ negflags |= (RXf_PMf_LOCALE|RXf_PMf_UNICODE);
has_charset_modifier = 1;
break;
case ONCE_PAT_MOD: /* 'o' */