Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Subscript flag (i) not working correctly on empty strings?
- X-seq: zsh-workers 51278
- From: Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
- To: Philippe Altherr <philippe.altherr@xxxxxxxxx>, Zsh hackers list <zsh-workers@xxxxxxx>
- Subject: Re: Subscript flag (i) not working correctly on empty strings?
- Date: Fri, 6 Jan 2023 17:23:19 +0000 (GMT)
- Archived-at: <https://zsh.org/workers/51278>
- Importance: Normal
- In-reply-to: <CAGdYchuqW79Q3nMguaOrJKEcRwMnQgDRNhHmh3hF5V6sgp=q4g@mail.gmail.com>
- List-id: <zsh-workers.zsh.org>
- References: <CAGdYchuqW79Q3nMguaOrJKEcRwMnQgDRNhHmh3hF5V6sgp=q4g@mail.gmail.com>
> On 06/01/2023 16:01 Philippe Altherr <philippe.altherr@xxxxxxxxx> wrote:
> The following script
>
> > s=aaa; echo $s[(i)z];
> > s=aa; echo $s[(i)z];
> > s=a; echo $s[(i)z];
> > s=; echo $s[(i)z];
>
> prints this
>
> > 4
> > 3
> > 2
> > 0
>
> Why is the last line 0 and not 1?
Certainly looks plain wrong. From the source it appears to be
an overzealous safety test --- if we get a NULL value, we should
give up trying to search the string, but not if we get an empty
string.
None of the existing tests fail with this change.
pws
diff --git a/Src/params.c b/Src/params.c
index 2e4a6eae2..6362b382c 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -1669,7 +1669,7 @@ getarg(char **str, int *inv, Value v, int a2, zlong *w,
/* Searching characters */
int slen;
d = getstrvalue(v);
- if (!d || !*d)
+ if (!d)
return 0;
/*
* beg and len are character counts, not raw offsets.
diff --git a/Test/D06subscript.ztst b/Test/D06subscript.ztst
index 21127e641..57cdc027c 100644
--- a/Test/D06subscript.ztst
+++ b/Test/D06subscript.ztst
@@ -299,3 +299,12 @@ F:In math, (($i)) should be the same as ((i)), see workers/47748.
echo ${string[(pws:\0:)1]}
0:Word splitting by NUL
>foo
+
+ string="a"
+ print ${string[(i)x]}
+ string=""
+ print ${string[(i)x]}
+0:Can check off end of zero length string
+F:Regression test for inconsistency of failed (i) on zero-length string
+>2
+>1
Messages sorted by:
Reverse Date,
Date,
Thread,
Author