ruby-changes:4555
From: ko1@a...
Date: Wed, 16 Apr 2008 02:28:36 +0900 (JST)
Subject: [ruby-changes:4555] nobu - Ruby:r16049 (trunk): * ruby.c (process_options): dln_find_file returns the pointer to a
nobu 2008-04-16 02:26:29 +0900 (Wed, 16 Apr 2008) New Revision: 16049 Modified files: trunk/ChangeLog trunk/ruby.c trunk/version.h Log: * ruby.c (process_options): dln_find_file returns the pointer to a static buffer, so should copy it. [ruby-dev:34409] http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=16049&r2=16048&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ruby.c?r1=16049&r2=16048&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16049&r2=16048&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 16048) +++ ChangeLog (revision 16049) @@ -1,3 +1,8 @@ +Wed Apr 16 02:26:27 2008 Nobuyoshi Nakada <nobu@r...> + + * ruby.c (process_options): dln_find_file returns the pointer to a + static buffer, so should copy it. [ruby-dev:34409] + Tue Apr 15 23:08:46 2008 Kouhei Sutou <kou@c...> * lib/xmlrpc/client.rb: fix cookie handling. [ruby-dev:34403] Index: version.h =================================================================== --- version.h (revision 16048) +++ version.h (revision 16049) @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2008-04-15" +#define RUBY_RELEASE_DATE "2008-04-16" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20080415 +#define RUBY_RELEASE_CODE 20080416 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2008 #define RUBY_RELEASE_MONTH 4 -#define RUBY_RELEASE_DAY 15 +#define RUBY_RELEASE_DAY 16 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; Index: ruby.c =================================================================== --- ruby.c (revision 16048) +++ ruby.c (revision 16049) @@ -84,6 +84,7 @@ int verbose; int yydebug; char *script; + VALUE script_name; VALUE e_script; struct { struct { @@ -934,6 +935,8 @@ return i; } +VALUE rb_progname; +VALUE rb_argv0; static int src_encoding_index = -1; /* TODO: VM private */ static VALUE @@ -1034,16 +1037,17 @@ if (!opt->script) opt->script = argv[0]; } -#if defined DOSISH || defined __CYGWIN__ - /* assume that we can change argv[n] if never change its length. */ - translate_char(opt->script, '\\', '/'); -#endif argc--; argv++; } } ruby_script(opt->script); +#if defined DOSISH || defined __CYGWIN__ + translate_char(RSTRING_PTR(rb_progname), '\\', '/'); +#endif + opt->script_name = rb_str_new4(rb_progname); + opt->script = RSTRING_PTR(opt->script_name); ruby_set_argv(argc, argv); process_sflag(opt); @@ -1108,7 +1112,7 @@ } return rb_iseq_new(tree, rb_str_new2("<main>"), - rb_str_new2(opt->script), Qfalse, ISEQ_TYPE_TOP); + opt->script_name, Qfalse, ISEQ_TYPE_TOP); } static NODE * @@ -1270,9 +1274,6 @@ return load_file(rb_parser_new(), fname, 0, &opt); } -VALUE rb_progname; -VALUE rb_argv0; - #if !defined(PSTAT_SETCMD) && !defined(HAVE_SETPROCTITLE) #if !defined(_WIN32) && !(defined(HAVE_SETENV) && defined(HAVE_UNSETENV)) #define USE_ENVSPACE_FOR_ARG0 @@ -1288,6 +1289,7 @@ char *s = argv[0]; int i; + if (!argc) return 0; s += strlen(s); /* See if all the arguments are contiguous in memory */ for (i = 1; i < argc; i++) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/