[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]