From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8550 invoked by alias); 25 Sep 2017 14:06:18 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 41761 Received: (qmail 14377 invoked by uid 1010); 25 Sep 2017 14:06:18 -0000 X-Qmail-Scanner-Diagnostics: from mailout1.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.11):SA:0(-6.9/5.0):. Processed in 3.282374 secs); 25 Sep 2017 14:06:18 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | X-AuditID: cbfec7f1-f793a6d00000326b-5a-59c90b410b7e Date: Mon, 25 Sep 2017 14:57:17 +0100 From: Peter Stephenson To: Zsh hackers list Subject: Re: exit status 0 after SIGINT Message-id: <20170925145717.13849173@pwslap01u.europe.root.pri> In-reply-to: <2f98bd49-1439-2bd9-c7b2-7d05ac8678fc@inlv.org> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHIsWRmVeSWpSXmKPExsWy7djP87qO3CcjDe59MbE42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGXtXb2Iq+MdZsaHrK1MD40X2LkZODgkBE4nJO7+yQthiEhfu rWfrYuTiEBJYyiix6/sXZginl0mi//4vZpiOw0vPQyWWMUq83d7KAuFMY5JYc/ImK4RzhlFi x4+lTCAtQgJnGSWa2tJAbBYBVYltyxYxgthsAoYSUzfNBrNFBLQkdpw8CVYvLKAucaizAWwd r4C9xMozk1hAbE4BG4krKz6ygdj8AvoSV/9+YoI4yV5i5pUzjBD1ghI/Jt8Dq2cW0JHYtu0x O4QtL7F5zVuoF+awSXRfsoawXSRWntsENUdY4tXxLdCAkZHo7DgIFe9nlHjS7QvymITADEaJ 02d2sEEkrCX6bl9khFjAJzFp23SgBRxAcV6JjjYhiBIPiTvnV0KVO0o8fPcDGnRAM3f/msI4 gVFhFpK7ZyG5exaSuxcwMq9iFEktLc5NTy020itOzC0uzUvXS87P3cQITAWn/x3/uIPx/Qmr Q4wCHIxKPLwNTCcjhVgTy4orcw8xSnAwK4nwMn8/ESnEm5JYWZValB9fVJqTWnyIUZqDRUmc 1zaqLVJIID2xJDU7NbUgtQgmy8TBKdXAKF646tS8f0GvlTQlLx2u45Ve/kHuWHzCXhHvyjX9 bv5iK71SghK8t5TNd2t+dElBcFK5h5/zCrta6f5zL1d3eqUuv7PSju1OfbXsp4KTGi4HNxud LORgUHmomMmmwpEiUZOzU7BTaO2pBv7bzX3sqlaSEefWMUUF6Yn6On3+vLMjK+5LygolluKM REMt5qLiRABtpqlHAQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrHLMWRmVeSWpSXmKPExsVy+t/xK7qO3CcjDTb+EbU42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGXtXb2Iq+MdZsaHrK1MD40X2LkZODgkBE4nDS88zQ9hiEhfu rWfrYuTiEBJYwiixtnUeC0hCSGAGk8THPXIQiXOMEjuvTGaHSJxllLjyyBjEZhFQldi2bBEj iM0mYCgxddNsMFtEQEtix8mTTCC2sIC6xKHOBrBtvAL2EivPTAJbwClgI3FlxUc2iJkTGSU6 b2qB2PwC+hJX/35igrjOXmLmlTOMEL2CEj8m3wPrZQaav3lbEyuELS+xec1bZog56hI37u5m n8AoPAtJyywkLbOQtCxgZF7FKJJaWpybnltsqFecmFtcmpeul5yfu4kRGMrbjv3cvIPx0sbg Q4wCHIxKPLwNTCcjhVgTy4orcw8xSnAwK4nwXucECvGmJFZWpRblxxeV5qQWH2KU5mBREuft 3bM6UkggPbEkNTs1tSC1CCbLxMEp1cBY/0B332Ebrw21vQtlfN0mz9k3sSwz8c7R3w/21ruc PXu/gbesQWrboZBzyy6pH7qawrDud+138chnzTGp2ipzev//bF+YpjZdQGmfbazhvpv1l3n8 2DYczjt05Mxnu6ZLy70zuu9qMzs965518PL/VIVnwVam1i0vLy+aIbGkyadIQGRyV+ksJZbi jERDLeai4kQA4qET+2ECAAA= X-CMS-MailID: 20170925135721eucas1p186037c570ebb7664c92d2d56cb536b30 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUb?= =?UTF-8?B?7IK87ISx7KCE7J6QG1ByaW5jaXBhbCBFbmdpbmVlciwgU29mdHdhcmU=?= X-Global-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUbU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtQcmluY2lwYWwgRW5naW5lZXIsIFNvZnR3YXJl?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDA1Q0QwNTAwNTg=?= CMS-TYPE: 201P X-CMS-RootMailID: 20170925125104epcas5p3948e0702e32903ad3a09070937edbb54 X-RootMTR: 20170925125104epcas5p3948e0702e32903ad3a09070937edbb54 References: <2f98bd49-1439-2bd9-c7b2-7d05ac8678fc@inlv.org> On Mon, 25 Sep 2017 13:50:15 +0100 Martijn Dekker wrote: > zsh in interactive mode sets the exit status to 0 after sending itself > SIGINT using the 'kill' command. I'd expect 130 (= 2 + 128). We ignore interrupts that happened in bulltins, in this case the "kill" that just got interrupted. This looks pretty clearly wrong. One minimal fix is to keep the current lastval if there's an interrupt flagged. Alternatively, we could keep the builtin status if it was non-zero. I doubt we're going to track down side effects without trying it out. pws diff --git a/Src/exec.c b/Src/exec.c index bd242d1..161d4ac 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -3999,8 +3999,15 @@ execcmd_exec(Estate state, Execcmd_params eparams, state->pc = opc; } dont_queue_signals(); - if (!errflag) - lastval = execbuiltin(args, assigns, (Builtin) hn); + if (!errflag) { + int ret = execbuiltin(args, assigns, (Builtin) hn); + /* + * In case of interruption assume builtin status + * is less useful than what interrupt set. + */ + if (!(errflag & ERRFLAG_INT)) + lastval = ret; + } if (do_save & BINF_COMMAND) errflag &= ~ERRFLAG_ERROR; restore_queue_signals(q);