This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fw: 1.5.11 bug in WEXITSTATUS() macro (wait.h)


On Sat, 25 Sep 2004, Peter Dons Tychsen wrote:

> Hello.
>
> 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)
>
> To:
>
> #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. :-)
>
> /Peter

This was reported back in July.  Google for '"negative exit status"
site:cygwin.com' for the full thread.
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,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
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]