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