ruby-changes:4819
From: ko1@a...
Date: Wed, 7 May 2008 20:25:38 +0900 (JST)
Subject: [ruby-changes:4819] usa - Ruby:r16313 (trunk): * ruby.c (process_options, ruby_set_argv): set encoding of rb_argv
usa 2008-05-07 20:25:23 +0900 (Wed, 07 May 2008)
New Revision: 16313
Modified files:
trunk/ChangeLog
trunk/ruby.c
Log:
* ruby.c (process_options, ruby_set_argv): set encoding of rb_argv
after Init_prelude() because cannot load encoding extensions before
it.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ruby.c?r1=16313&r2=16312&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16313&r2=16312&diff_format=u
Index: ChangeLog
===================================================================
--- ChangeLog (revision 16312)
+++ ChangeLog (revision 16313)
@@ -1,3 +1,9 @@
+Wed May 7 20:19:18 2008 NAKAMURA Usaku <usa@r...>
+
+ * ruby.c (process_options, ruby_set_argv): set encoding of rb_argv
+ after Init_prelude() because cannot load encoding extensions before
+ it.
+
Wed May 7 18:02:01 2008 Yukihiro Matsumoto <matz@r...>
* string.c (sym_to_i): remove obsolete method. preparation for
Index: ruby.c
===================================================================
--- ruby.c (revision 16312)
+++ ruby.c (revision 16313)
@@ -951,7 +951,7 @@
char **argv = argp->argv;
NODE *tree = 0;
VALUE parser;
- rb_encoding *enc;
+ rb_encoding *enc, *lenc;
const char *s;
int i = proc_options(argc, argv, opt);
int safe;
@@ -1059,6 +1059,10 @@
safe = rb_safe_level();
rb_set_safe_level_force(0);
ruby_init_gems(!(opt->disable & DISABLE_BIT(gems)));
+ lenc = rb_locale_encoding();
+ for (i = 0; i < RARRAY_LEN(rb_argv); i++) {
+ rb_enc_associate(RARRAY_PTR(rb_argv)[i], lenc);
+ }
parser = rb_parser_new();
if (opt->yydebug) rb_parser_set_yydebug(parser, Qtrue);
if (opt->ext.enc.name != 0) {
@@ -1072,7 +1076,7 @@
enc = rb_enc_from_index(opt->ext.enc.index);
}
else {
- enc = rb_locale_encoding();
+ enc = lenc;
}
rb_enc_set_default_external(rb_enc_from_encoding(enc));
@@ -1083,7 +1087,7 @@
eenc = rb_enc_from_index(opt->src.enc.index);
}
else {
- eenc = rb_locale_encoding();
+ eenc = lenc;
}
rb_enc_associate(opt->e_script, eenc);
require_libraries();
@@ -1460,7 +1464,6 @@
ruby_set_argv(int argc, char **argv)
{
int i;
- rb_encoding *enc = rb_locale_encoding();
VALUE av = rb_argv;
#if defined(USE_DLN_A_OUT)
@@ -1472,7 +1475,6 @@
rb_ary_clear(av);
for (i = 0; i < argc; i++) {
VALUE arg = rb_tainted_str_new2(argv[i]);
- rb_enc_associate(arg, enc);
OBJ_FREEZE(arg);
rb_ary_push(av, arg);
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/