Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [BUG] ksh_zero_subscript messes with associative arrays
> On 26/07/2022 17:18 Felipe Contreras <felipe.contreras@xxxxxxxxx> wrote:
> The test is very simple:
>
> setopt ksh_zero_subscript
> typeset -A args
> (( $+args[foo] )) && echo set
>
> ksh_zero_subscript shouldn't be changing the behavior of the code, correct?
I can't see how it should be having any kind of effect on an associative array,
no
pws
diff --git a/Src/params.c b/Src/params.c
index 27ea82298..f587657c7 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -1996,7 +1996,8 @@ getindex(char **pptr, Value v, int flags)
* altered the start index in getarg().
* Are we being strict?
*/
- if (isset(KSHZEROSUBSCRIPT)) {
+ if (isset(KSHZEROSUBSCRIPT) &&
+ !(v->pm->node.flags & PM_HASHED)) {
/*
* We're not.
* Treat this as accessing the first element of the
diff --git a/Test/D06subscript.ztst b/Test/D06subscript.ztst
index adbd398c4..2546013a9 100644
--- a/Test/D06subscript.ztst
+++ b/Test/D06subscript.ztst
@@ -224,6 +224,11 @@
0:(R) yuckily returns the first element on failure with KSH_ZERO_SUBSCRIPT
>XfimbleX
+ typeset -A empty_hash
+ (( $+empty_hash[unset_param] )) || echo Entry is not set
+0:KSH_ZERO_SUBSCRIPT has no effect on hashes
+>Entry is not set
+
unsetopt KSH_ZERO_SUBSCRIPT
array[(R)notfound,(r)notfound]=(help help here come the seventies retreads)
print $array
Messages sorted by:
Reverse Date,
Date,
Thread,
Author