From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id a560e442 for ; Fri, 3 May 2019 17:21:51 +0000 (UTC) Received: (qmail 7513 invoked by alias); 3 May 2019 17:21:35 -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: List-Unsubscribe: X-Seq: 44269 Received: (qmail 26631 invoked by uid 1010); 3 May 2019 17:21:35 -0000 X-Qmail-Scanner-Diagnostics: from kahlil.inlv.org by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25434. spamassassin: 3.4.2. Clear:RC:0(37.59.109.123):SA:0(-1.9/5.0):. Processed in 1.862789 secs); 03 May 2019 17:21:35 -0000 X-Envelope-From: martijn@inlv.org X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at inlv.org does not designate permitted sender hosts) From: Martijn Dekker Subject: [BUG] program flow corruption involving dot script and 'until' loop To: Zsh hackers list Message-ID: Date: Fri, 3 May 2019 18:20:52 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit ===begin test.sh=== #! /bin/sh fn() { echo beginfn . ./dot.sh echo endfn$? } echo begin fn echo end ===end test.sh=== ===begin dot.sh=== #! /bin/sh echo dot until return 42; do : done ===end dot.sh=== Actual output: $ zsh test.sh begin beginfn dot Expected output: $ zsh test.sh begin beginfn dot endfn42 end Looks like the 'return' in the dot script causes zsh to just give up on the program altogether. If 'return 42' is changed to 'return' in dot.sh, the bug disappears. If it is changed to '(exit 42); return', the bug re-appears. I've tested zsh versions down to 5.0.6; they all act identically. - M.