This is the mail archive of the
mailing list for the Cygwin project.
Re: Fw: 1.5.11 bug in WEXITSTATUS() macro (wait.h)
- From: Igor Pechtchanski <pechtcha at cs dot nyu dot edu>
- To: Peter Dons Tychsen <donpedro at tdcadsl dot dk>
- Cc: cygwin at cygwin dot com
- Date: Sat, 25 Sep 2004 15:31:33 -0400 (EDT)
- Subject: Re: Fw: 1.5.11 bug in WEXITSTATUS() macro (wait.h)
- References: <00f001c4a32f$d724a570$0200000a@donpedro>
- Reply-to: cygwin at cygwin dot com
On Sat, 25 Sep 2004, Peter Dons Tychsen wrote:
> The WEXITSTATUS is a bit buggy. (wait.h)
> The macro extracts information gained from a call to waitpid() (and others).
> The information it extracts is the status of the completed process (8 bit
> signed value).
> The problem is that the macro does not cast the value to a signed integer
> (like other systems do), which can cause the value to be incorrectly
> interpreted (breaks some programs).
> The following fails:
> // Wait for processes to complete
> if(waitpid(pid, &status, 0) == pid)
> // Check return value for failure (-1)
> if(WEXITSTATUS(status) == -1)
> /* We will never get here, as the macro returns 255 if the process exited with -1 */
> The problem can be fixed by changing the macro from:
> #define WEXITSTATUS(w) (((w) >> 8) & 0xff)
> #define WEXITSTATUS(w) ((signed char)(((w) >> 8) & 0xff))
> It is kind of weird that no one has discovered this boo-boo before :-(
> Hope it is not me who is boo-boo. :-)
This was reported back in July. Google for '"negative exit status"
site:cygwin.com' for the full thread.
|\ _,,,---,,_ email@example.com
ZZZzz /,`.-'`' -. ;-;;,_ firstname.lastname@example.org
|,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D.
'---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow!
"Happiness lies in being privileged to work hard for long hours in doing
whatever you think is worth doing." -- Dr. Jubal Harshaw
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html