From mboxrd@z Thu Jan 1 00:00:00 1970
X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org
X-Spam-Level:
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY
autolearn=ham autolearn_force=no version=3.4.4
Received: (qmail 23717 invoked from network); 5 May 2021 11:47:33 -0000
Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368)
by inbox.vuxu.org with ESMTPUTF8; 5 May 2021 11:47:33 -0000
ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1620215253;
b=jdBPlpGmJtQzfK8JdcfrsvdMl6yCdmc4gPLkSMaTvw3CrP0J8n6ptl6TUJ0R7RzPWNzRelwkEo
F7AexI0Q/4yejvA6cKBLAuE4ayxlnFB7d5aNGSFmsRYrjJAJSlgmgObrfejMotjtUDTNRLt6a7
4ev+CGDi8qIS3sv6cH2EmGs5qnzExS4DgcAh7jqbAinUylHoF7b9Hfx7oonSwJGXd3so1MzvmZ
6Gg80zgnyMnPOmG4xQz2YGNReM3LPRN/qWcjEBtCAgI9NM/Z/xHTSNU33wwTRc4HWtOro92td3
vtBK+iwTgpJ0uuKGlNP8/z0MpeiRcyuT23Mfv7Q3wsUNFw==;
ARC-Authentication-Results: i=1; zsh.org;
iprev=pass (smtpq1.tb.ukmail.iss.as9143.net) smtp.remote-ip=212.54.57.96;
dkim=pass header.d=ntlworld.com header.s=meg.feb2017 header.a=rsa-sha256;
dmarc=pass header.from=ntlworld.com;
arc=none
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1620215253;
bh=29JNYLGrjCnVkCKv3Hiw1wVGwuWA3G6Z5opdh86NxS8=;
h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help:
List-Id:Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:
References:In-Reply-To:Message-ID:To:From:Date:DKIM-Signature:
DKIM-Signature;
b=IKOY6P8E7mweDYZtta+j3VI8zRDuEfO8oWev6CIhe04o3PD+OoIgHzRzr+GbKYUFE8gU5W+CsZ
1NzNpR/b0DHLZAi5WYLC2ZQQuQu4VToeyFs+ehe9Spxv0WeYtFJTpX6A97PL9HT3Ckig9ln7Ko
jHCfZ+hnz2op9pPmqytyqGj/hMzBdg443/mdp6in6vpHBDzunhqiuRqv2QUJcAw7ICeqwbNn2L
Iu+0SkNu/8EsASLE65ddvixzp703CLVCiGJHC4hX0/Z0wuEP/4PEaZ5BKeFaav7/aB2YgEBGo9
HFt0RC8FdEDdlJspxacVEo+xB/RnOObaqBecD6IP9J5ExA==;
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org;
s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:
List-Subscribe:List-Help:List-Id:Sender:Content-Transfer-Encoding:
Content-Type:MIME-Version:Subject:References:In-Reply-To:Message-ID:To:From:
Date:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From:
Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID;
bh=fKgTQ3NgfPUh07Rllnm8VmA6t9f7vzjC7uq64iRks2w=; b=Alqto/JIJ+Rr3hALwll05f0xT1
8aPTY7bKJrie+D5eaTl6NM518/Aj6DAQZRf61Db+ZYX4KTU6YPyoaoJlgyCMQFO0g3bOE0Oqp9iKo
ROZUBjLrNdQvr2ijnJ1douw9MAd5r56pyWC1R6tYGbW6Q/WUDpEggfrYapW3FXmE70uaGsZiXaY1s
bp4qNqvQrydtP++ah+C/JlbU2yC3ObgraTBdTkgNkR/m6rBpwfZ1Xn3YbQBkeRh5gyKtGghGFk8Ov
rdgn1Hub+2qSSFzPAKnhAusczkdKEBXAICVCYvB9AyeodL4y6SUzEwJiN+10oovwFE+ZbZiCxCEND
zxHilzrQ==;
Received: from authenticated user by zero.zsh.org with local
id 1leG05-000GDR-5W; Wed, 05 May 2021 11:47:33 +0000
Authentication-Results: zsh.org;
iprev=pass (smtpq1.tb.ukmail.iss.as9143.net) smtp.remote-ip=212.54.57.96;
dkim=pass header.d=ntlworld.com header.s=meg.feb2017 header.a=rsa-sha256;
dmarc=pass header.from=ntlworld.com;
arc=none
Received: from smtpq1.tb.ukmail.iss.as9143.net ([212.54.57.96]:36688)
by zero.zsh.org with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128)
id 1leFzr-000FuN-C1; Wed, 05 May 2021 11:47:20 +0000
Received: from [212.54.57.82] (helo=smtp3.tb.ukmail.iss.as9143.net)
by smtpq1.tb.ukmail.iss.as9143.net with esmtp (Exim 4.86_2)
(envelope-from
)
id 1leFzr-00018x-3N
for zsh-workers@zsh.org; Wed, 05 May 2021 13:47:19 +0200
Received: from oxbe3.tb.ukmail.iss.as9143.net ([172.25.160.134])
by smtp3.tb.ukmail.iss.as9143.net with ESMTP
id eFzqlR1wIiCtJeFzrlC79x; Wed, 05 May 2021 13:47:19 +0200
X-Env-Mailfrom: p.w.stephenson@ntlworld.com
X-Env-Rcptto: zsh-workers@zsh.org
X-SourceIP: 172.25.160.134
X-CNFS-Analysis: v=2.4 cv=GushRm5C c=1 sm=1 tr=0 ts=609285c7 cx=a_exe
a=rX2mKgs1IZJU9lF6pltyEQ==:117 a=ADWkfsjt5WoA:10 a=IkcTkHD0fZMA:10
a=ac2Zk7JPEtsA:10 a=N898d1J4AAAA:8 a=xTemMnpDZNJ-91HQZaEA:9 a=QEXdDO2ut3YA:10
a=4OhKILdWXy8MGewZJRtY:22
X-Authenticated-Sender: p.w.stephenson@ntlworld.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ntlworld.com;
s=meg.feb2017; t=1620215239;
bh=29JNYLGrjCnVkCKv3Hiw1wVGwuWA3G6Z5opdh86NxS8=;
h=Date:From:To:In-Reply-To:References:Subject;
b=g0LttDYSnSB6TkPsr4wc7ZQVeOfXsJANhgTKc2QcR4LAdrSTNBuUF8DYZue1M1BJ2
LDylNoIRWHgPLRCfVyJHelVxhEXphsl2K3Z5C4WlEh9/W0Hum5CVUWWS7tq688sAuK
qSW7eEsXo2tteFYNZLMA95VgyI8hRkuircvhGYCK9xCPabgO6SFuM0bFQ8q2yzTVZd
uSGdFzq1Xl9/edf/2z+Fo3TIve0YKND/w3Sn9SWch74uB55aP1RODS3mxwQ/yUYRgY
XfbvbFRqNo+aVgxMHIld6NAUC8IGVzNvPg4SgZXozV1F1Ny8mG3++4uQmWtNosZp56
YOu05hobKRWNg==
Date: Wed, 5 May 2021 12:47:18 +0100 (BST)
From: Peter Stephenson
To: Zsh hackers list
Message-ID: <1850011516.689067.1620215238829@mail2.virginmedia.com>
In-Reply-To: <20210505110713.zmny7625vlmog6ir@chazelas.org>
References: <20210505110713.zmny7625vlmog6ir@chazelas.org>
Subject: Re: [bug] wrong exit status upon (e) flag fatal errors in if/while
conditions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Priority: 3
Importance: Medium
X-Mailer: Open-Xchange Mailer v7.8.4-Rev72
X-Originating-IP: 147.161.167.116
X-Originating-Client: open-xchange-appsuite
X-CMAE-Envelope: MS4xfHjI/DiNlx9DjZOOLwfdUtBw9haA9ru1uteuDzeW8bPaf917i/UQmQ3qdccChWFZIira27agtO2MPsvPwVwBXCe3Zt8KY2fMOHt6UAj2C3Mo26mMaTpi
1y86Mka/U0Gt1lUW1koiwqyoq0BOXbjCQYV2YgoZTJDZ8AnejCrZXqazjEox04z+NCjw5YkLN+8vWwdEc6r/O56OdEVo+NPHuBWPDTHx7r5yPdhpTG+PzBzr
X-Seq: 48787
Archived-At:
X-Loop: zsh-workers@zsh.org
Errors-To: zsh-workers-owner@zsh.org
Precedence: list
Precedence: bulk
Sender: zsh-workers-request@zsh.org
X-no-archive: yes
List-Id:
List-Help:
List-Subscribe:
List-Unsubscribe:
List-Post:
List-Owner:
List-Archive:
> On 05 May 2021 at 12:07 Stephane Chazelas wrote:
> $ a='${' zsh -c 'if : ${(e)a}; then echo x; fi; echo y'; echo $?
> zsh:1: bad substitution
> 0
> $ a='${' zsh -c 'if : ${(e)a}; then echo x; fi; echo y'; echo $?
> zsh:1: bad substitution
> 0
>
> That's when the (e) flag is used in the condition part of an
> "if" or "while" (not "until") statement at least.
>
> The shell aborts with an error message but with a success exit
> status.
I can do this one; it's quite obvious looking at the code, I think...
BTW this is somewhat obscurely cut and pasted, the actual commit
will come straight from the Linux machine, so don't worry about
any line endings here.
pws
diff --git a/Src/loop.c b/Src/loop.c
index 41b2e5627..aa733a2cb 100644
--- a/Src/loop.c
+++ b/Src/loop.c
@@ -583,7 +583,7 @@ execif(Estate state, int do_exec)
cmdpop();
} else {
noerrexit = olderrexit;
- if (!retflag)
+ if (!retflag && !errflag)
lastval = 0;
}
state->pc = end;
diff --git a/Test/A01grammar.ztst b/Test/A01grammar.ztst
index 35a04e7d5..88fc8606e 100644
--- a/Test/A01grammar.ztst
+++ b/Test/A01grammar.ztst
@@ -939,3 +939,8 @@ F:Note that the behaviour of 'exit' inside try-list inside a function is unspeci
$ZTST_testdir/../Src/zsh -fc '{ ( ) } always { echo foo }'
0:exec last command optimization inhibited for try/always
>foo
+
+ a='${'
+ if : ${(e)a}; then echo x; fi
+1:Status on bad substitution in if without else
+?(eval):2: bad substitution