From owner-freebsd-bugs Wed Jun 4 15:00:05 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id PAA15598 for bugs-outgoing; Wed, 4 Jun 1997 15:00:05 -0700 (PDT) Received: (from gnats@localhost) by hub.freebsd.org (8.8.5/8.8.5) id PAA15583; Wed, 4 Jun 1997 15:00:03 -0700 (PDT) Resent-Date: Wed, 4 Jun 1997 15:00:03 -0700 (PDT) Resent-Message-Id: <199706042200.PAA15583@hub.freebsd.org> Resent-From: gnats (GNATS Management) Resent-To: freebsd-bugs Resent-Reply-To: FreeBSD-gnats@FreeBSD.ORG, sanewo@ba2.so-net.or.jp Received: from sanewo.ba2.so-net.or.jp (pppba4b.pppp.ap.so-net.or.jp [210.132.186.75]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id OAA15308 for ; Wed, 4 Jun 1997 14:56:07 -0700 (PDT) Received: (from sanewo@localhost) by sanewo.ba2.so-net.or.jp (8.8.5/8.7.3) id GAA20600; Thu, 5 Jun 1997 06:51:47 +0900 (JST) Message-Id: <199706042151.GAA20600@sanewo.ba2.so-net.or.jp> Date: Thu, 5 Jun 1997 06:51:47 +0900 (JST) From: sanewo@ba2.so-net.or.jp Reply-To: sanewo@ba2.so-net.or.jp To: FreeBSD-gnats-submit@FreeBSD.ORG X-Send-Pr-Version: 3.2 Subject: bin/3780: WEXITSTATUS() may return nagative value, which causes sh to generate bad $? Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >Number: 3780 >Category: bin >Synopsis: WEXITSTATUS() may return nagative value, which causes sh to generate bad $? >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Jun 4 15:00:03 PDT 1997 >Last-Modified: >Originator: Takanori Saneto >Organization: an individual >Release: FreeBSD 3.0-CURRENT i386 >Environment: current as of June 1 1997. >Description: When subprocess of /bin/sh exit(2)s with negative argument, the value of $? bacomes bad. (-/ instead of -1, for example) >How-To-Repeat: # /bin/sh -c 'perl -e "exit -1"; echo $?' -/ >Fix: *** bin/sh/expand.c.org Thu Jun 5 06:45:18 1997 --- bin/sh/expand.c Thu Jun 5 06:45:43 1997 *************** *** 1388,1393 **** --- 1388,1394 ---- temp[31] = '\0'; + if (neg) num = -num; do { *--p = num % 10 + '0'; } while ((num /= 10) != 0); BTW, should WEXITSTATUS() return unsigned value? (I don't know what POSIX says about this) >Audit-Trail: >Unformatted: