diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-10-16 05:48:40 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-10-16 05:48:40 +0000 |
commit | 676dc908b6ae40413e552ae4edf047190cdb583d (patch) | |
tree | dbe1304a04c76b55c5189fa3bcd107a30e668074 /parse.y | |
parent | 9f00119776a1dec9f26203e0ce46e28d954102e4 (diff) | |
download | ruby-676dc908b6ae40413e552ae4edf047190cdb583d.tar.gz |
* 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.y | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -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 |