--- ray/src/common/win_process.c 2004/10/23 18:55:52 3.5 +++ ray/src/common/win_process.c 2012/06/14 05:13:25 3.7 @@ -1,5 +1,5 @@ #ifndef lint -static char RCSid[]="$Id: win_process.c,v 3.5 2004/10/23 18:55:52 schorsch Exp $"; +static char RCSid[]="$Id: win_process.c,v 3.7 2012/06/14 05:13:25 greg Exp $"; #endif /* * Routines to communicate with separate process via dual pipes. @@ -185,7 +185,7 @@ error: /* cleanup */ if(hWrite) CloseHandle(hWrite); if(hCurProc) CloseHandle(hCurProc); proc->running = 0; - return 0; + return -1; /* There... Are we happy now? */ } @@ -280,8 +280,9 @@ open_process(SUBPROC *proc, char *av[]) char *cmdstr; proc->running = 0; + if (av == NULL) { return -1; } cmdpath = getpath(av[0], getenv("PATH"), X_OK); - cmdstr = quoted_cmdline(cmdpath, av); + cmdstr = quoted_cmdline(cmdpath, av+1); if (cmdstr == NULL) { return 0; } return start_process(proc, cmdstr); } @@ -325,7 +326,7 @@ close_process(SUBPROC *proc) { /* something went wrong: enforce infanticide */ /* other than that, it looks like we want to ignore errors here */ if (proc->running) { - int win_kill(pid, 0); + win_kill(pid, 0); } } proc->running = 0;