delorie.com/archives/browse.cgi | search |
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/
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |