[PATCH] ntdll: Avoid truncating a nonzero exit code to zero in unix
Alexandre Julliard
julliard at winehq.org
Tue May 14 13:33:19 CDT 2019
Martin Storsjo <martin at martin.st> writes:
> diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
> index 053c87da83..a89ff20fd6 100644
> --- a/dlls/ntdll/signal_i386.c
> +++ b/dlls/ntdll/signal_i386.c
> @@ -2817,6 +2817,9 @@ void signal_exit_thread( int status )
> */
> void signal_exit_process( int status )
> {
> + /* Prevent a nonzero exit code to end up truncated to zero in unix. */
> + if (status != 0 && (status & 0xff) == 0)
> + status = 1;
> call_thread_exit_func( status, exit );
> }
>
> diff --git a/dlls/ntdll/signal_powerpc.c b/dlls/ntdll/signal_powerpc.c
> index 86398d8f54..a5cce9bae3 100644
> --- a/dlls/ntdll/signal_powerpc.c
> +++ b/dlls/ntdll/signal_powerpc.c
> @@ -1240,6 +1240,9 @@ void signal_exit_thread( int status )
> */
> void signal_exit_process( int status )
> {
> + /* Prevent a nonzero exit code to end up truncated to zero in unix. */
> + if (status != 0 && (status & 0xff) == 0)
> + status = 1;
> exit( status );
> }
You could probably do that in the caller instead of duplicating it into
every CPU backend.
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list