diff options
author | Karl Williamson <public@khwilliamson.com> | 2010-10-20 13:21:04 -0600 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2010-10-21 14:48:27 -0700 |
commit | 8cc86590c5aa026ef05d88e777ab02f3434e8415 (patch) | |
tree | 3757c3778bc80f788da4eaaa11f1a79742c64d8a /regcomp.c | |
parent | f6e17a8494f84e70891cf58d8de1f22dbeac544c (diff) | |
download | perl-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.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -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' */ |