* process.c(rb_spawn): fix SEGV at "p system('command line here')"

(may happen only in bccwin32) [ruby-dev:23380]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6183 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ocean 2004-04-21 01:28:19 +00:00
parent 51ab50efd3
commit 1f4513af45
2 changed files with 162 additions and 157 deletions

View File

@ -1,3 +1,8 @@
Wed Apr 21 10:18:06 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* process.c(rb_spawn): fix SEGV at "p system('command line here')"
(may happen only in bccwin32) [ruby-dev:23380]
Mon Apr 19 20:58:44 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* dir.c: Updated RDocs.

View File

@ -1547,7 +1547,7 @@ rb_spawn(argc, argv)
earg.argv = argv;
earg.prog = prog ? RSTRING(prog)->ptr : 0;
status = rb_fork(&status, (int (*)_((void*)))rb_exec, &earg);
if (prog) argv[0] = prog;
if (prog && argc) argv[0] = prog;
#elif defined HAVE_SPAWNV
if (!argc) {
status = proc_spawn(RSTRING(prog)->ptr);
@ -1555,9 +1555,9 @@ rb_spawn(argc, argv)
else {
status = proc_spawn_n(argc, argv, prog);
}
if (prog) argv[0] = prog;
if (prog && argc) argv[0] = prog;
#else
if (prog) argv[0] = prog;
if (prog && argc) argv[0] = prog;
prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
status = system(StringValuePtr(prog));
# if defined(__human68k__) || defined(__DJGPP__)