ruby-changes:23841
From: akr <ko1@a...>
Date: Mon, 4 Jun 2012 00:45:57 +0900 (JST)
Subject: [ruby-changes:23841] akr:r35892 (trunk): * process.c (rb_spawn_process): fix for Windows. not tested.
akr 2012-06-04 00:45:46 +0900 (Mon, 04 Jun 2012) New Revision: 35892 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35892 Log: * process.c (rb_spawn_process): fix for Windows. not tested. Modified files: trunk/ChangeLog trunk/process.c Index: ChangeLog =================================================================== --- ChangeLog (revision 35891) +++ ChangeLog (revision 35892) @@ -1,3 +1,7 @@ +Mon Jun 4 00:45:18 2012 Tanaka Akira <akr@f...> + + * process.c (rb_spawn_process): fix for Windows. not tested. + Mon Jun 4 00:11:51 2012 Tanaka Akira <akr@f...> * process.c (rb_proc_exec_e): don't use ISSPACE(). \f, \r and \v Index: process.c =================================================================== --- process.c (revision 35891) +++ process.c (revision 35892) @@ -3094,14 +3094,17 @@ return -1; } - argc = earg->argc; - argv = earg->argv; - if (prog && !earg->use_shell) argv[0] = prog; + if (prog && !earg->use_shell) { + char **argv = (char **)RSTRING_PTR(earg->argv_str); + argv[0] = prog; + } # if defined HAVE_SPAWNV if (earg->use_shell) { pid = proc_spawn(RSTRING_PTR(prog)); } else { + char **argv = (char **)RSTRING_PTR(earg->argv_str); + int argc = RSTRING_LEN(earg->argv_str) / sizeof(char *) - 1; pid = proc_spawn_n(argc, argv, prog, earg->options); } # if defined(_WIN32) @@ -3109,7 +3112,11 @@ rb_last_status_set(0x7f << 8, 0); # endif # else - if (!earg->use_shell) prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" ")); + if (!earg->use_shell) { + char **argv = (char **)RSTRING_PTR(earg->argv_str); + int argc = RSTRING_LEN(earg->argv_str) / sizeof(char *) - 1; + prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" ")); + } status = system(StringValuePtr(prog)); rb_last_status_set((status & 0xff) << 8, 0); # endif -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/