Return exit code as signed integer from wxExecute(wxEXEC_SYNC).

The caller expects the function to return -1 if the child process exited with
-1 error code and not 255 that was returned before. The function is also
documented as returning -1 if the execution fails which wasn't true neither.

Fix this by explicitly handling the exit code as signed.

Closes #11824.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2010-03-18 15:51:19 +00:00
parent 0772a89875
commit 34e3a8105d
2 changed files with 9 additions and 2 deletions

View File

@ -441,6 +441,7 @@ All:
Unix:
- Return signed return code from wxExecute(wxEXEC_SYNC).
- Allow to use WX_APPNAME_DATA_DIR environment var to override the return value
of wxStandardPaths::GetDataDir().

View File

@ -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;