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