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:
parent
0772a89875
commit
34e3a8105d
@ -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().
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user