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
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().
{
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;