X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e33cd7e20305ba81e47cc17cfafdfb20d543e30d..a5655d37db9baabce654849fd66173f95f74e230:/src/unix/utilsunx.cpp diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index 2e9973b6da..6126c0a2e5 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -394,7 +394,7 @@ public: ArgsArray(wchar_t **wargv) { int argc = 0; - while ( *wargv++ ) + while ( wargv[argc] ) argc++; Init(argc); @@ -1373,15 +1373,21 @@ int DoWaitForChild(int pid, int flags = 0) { wxASSERT_MSG( rc == pid, "unexpected waitpid() return value" ); + // notice that the caller expects the exit code to be signed, e.g. -1 + // instead of 255 so don't assign WEXITSTATUS() to an int + signed char exitcode; if ( WIFEXITED(status) ) - return WEXITSTATUS(status); + exitcode = WEXITSTATUS(status); else if ( WIFSIGNALED(status) ) - return -WTERMSIG(status); + exitcode = -WTERMSIG(status); else { wxLogError("Child process (PID %d) exited for unknown reason, " "status = %d", pid, status); + exitcode = -1; } + + return exitcode; } return -1;