summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-16 05:48:40 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-16 05:48:40 +0000
commit676dc908b6ae40413e552ae4edf047190cdb583d (patch)
treedbe1304a04c76b55c5189fa3bcd107a30e668074 /parse.y
parent9f00119776a1dec9f26203e0ce46e28d954102e4 (diff)
* parse.y (parser_regx_options): check if regexp encoding option
matches to current encoding. * re.c (char_to_option, rb_char_to_option_kcode): 'n' is not kcode option now. * re.c (rb_reg_to_s, rb_reg_error_desc): copy encoding rather than append as an option. * re.c (make_regexp, rb_reg_prepare_re): use encoding of Regexp and String instead of kcode. * re.c (rb_reg_initialize): set fixed option if none is set. * re.c (rb_reg_regcomp): ditto. * re.c (rb_reg_equal): check if encodings are equal. * re.c (rb_reg_initialize_m): encoding option is obsolete. * re.c (rb_kcode, rb_get_kcode, rb_set_kcode): removed. * re.c (Init_Regexp): removed Regexp#kcode method. * ruby.c (proc_options): allow long encoding name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y9
1 files changed, 6 insertions, 3 deletions
diff --git a/parse.y b/parse.y
index 29b74ae759..2708415446 100644
--- a/parse.y
+++ b/parse.y
@@ -5115,7 +5115,6 @@ parser_regx_options(struct parser_params *parser)
{
extern int rb_char_to_option_kcode(int c, int *option, int *kcode);
- int kcode = 0;
int options = 0;
int c, opt, kc;
@@ -5126,7 +5125,11 @@ parser_regx_options(struct parser_params *parser)
}
else if (rb_char_to_option_kcode(c, &opt, &kc)) {
options |= opt;
- if (kc != 0) kcode = kc;
+ if (kc != 0 && rb_enc_from_index(kc) != parser->enc) {
+ compile_error(PARSER_ARG
+ "regexp encoding option '%c' mismatch to %s",
+ c, rb_enc_name(parser->enc));
+ }
}
else {
tokadd(c);
@@ -5138,7 +5141,7 @@ parser_regx_options(struct parser_params *parser)
compile_error(PARSER_ARG "unknown regexp option%s - %s",
toklen() > 1 ? "s" : "", tok());
}
- return options | kcode;
+ return options;
}
#define STR_FUNC_ESCAPE 0x01