Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
ERR_RETURN ignored in 'if' in a source'd file [FIXED]
- X-seq: zsh-users 30257
- From: "James Widman" <james.widman@xxxxxxxxx>
- To: zsh-users@xxxxxxx
- Subject: ERR_RETURN ignored in 'if' in a source'd file [FIXED]
- Date: Wed, 7 May 2025 11:18:10 +0000
- Archived-at: <https://zsh.org/users/30257>
- List-id: <zsh-users.zsh.org>
Hi all,
I recently hit a bug in zsh 5.9 that has since been fixed in the main git
branch, so I thought I'd describe the bug here in case anyone else runs into
it.
The example is:
#!/usr/bin/env zsh
foo(){
setopt err_return
source <(echo 'if true; then return 42; fi')
echo "This line is printed by zsh 5.9 (but it shouldn't be)."
}
foo
I ran git-bisect and found that this bug was fixed in:
commit f253ea6b9d14901e24fa6a376936effad9e6547b
Author: Philippe Altherr [email redacted]
Date: Sat Dec 3 21:14:26 2022 -0800
51076: fix ERR_EXIT when used with "eval" or "source"; documentary
comments
In the scripts i was originally working on, the source'd file is named
'foo.parse-arguments', which parses arguments that the user provides to `foo`,
and which contains an invocation of `zparseopts` (which is about a half-page
long), followed by several checks to make sure that the arguments are
reasonable.
I `source` it so that the local parameters defined in `foo.parse-arguments`
are introduced into the scope of `foo`. And because `foo.parse-arguments`
returns non-zero in the event of a usage error, everything in `foo` after the
`source` invocation can just use those option parameters without any other
checks (and that helps to keep `foo` reasonably-sized).
...But that all depended on ERR_RETURN working as in the example above. So I'm
very happy to find that this bug was already fixed!
Many thanks to Philippe Altherr for all the ERR_RETURN/ERR_EXIT fixes, and
also, thanks to all maintainers!
I've been using zsh for at least 15 years. I don't recall hitting any other
zsh bugs in that time, and I cannot say the same of most of the tools that I
use on a daily basis. Well done, all!
--James
Messages sorted by:
Reverse Date,
Date,
Thread,
Author