delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2004/09/25/14:41:05

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <00f001c4a32f$d724a570$0200000a@donpedro>
From: "Peter Dons Tychsen" <donpedro AT tdcadsl DOT dk>
To: <cygwin AT cygwin DOT com>
Subject: Fw: 1.5.11 bug in WEXITSTATUS() macro (wait.h)
Date: Sat, 25 Sep 2004 20:45:33 +0200
MIME-Version: 1.0
X-IsSubscribed: yes
Note-from-DJ: This may be spam

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


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.737 / Virus Database: 491 - Release Date: 11-08-2004


--
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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019