Subject: Re: bug#6430: Emacs WINDOWS truncates exit status of processes to 8 bits

From: Óscar Fuentes <[email-masked]>
Date: Wed, 15 Jun 2016 17:15:54 +0200

Eli Zaretskii <[email-masked]> writes:

>> When a Windows application calls an API that fails and the application
>> has no method for recovering from the error, it is customary to exit
>> with the error code of the API (usually obtained with GetLastError).
>
> GetLastError has nothing to do with this, because it's not an API that
> fails, it's a program that exits with some arbitrary exit code.

if( ! CreateProcess(....) ) {
  DWORD ec = GetLastError();
  // do some cleanup
  ExitProcess(ec);
}
  
The program exits with the error code obtained with GetLastError, which
is a 32 bit number.

The program may have its own exit codes, which can be wider than 8 bits.