Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[PATCH] 'repeat' loops: Let the repeat count use $?.



It's an arithmetic expression.
---
 Src/loop.c             | 2 +-
 Test/A05execution.ztst | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/Src/loop.c b/Src/loop.c
index f13c8c4a9..9fb45d076 100644
--- a/Src/loop.c
+++ b/Src/loop.c
@@ -497,7 +497,6 @@ execrepeat(Estate state, UNUSED(int do_exec))
 
     end = state->pc + WC_REPEAT_SKIP(code);
 
-    lastval = 0;
     tmp = ecgetstr(state, EC_DUPTOK, &htok);
     if (htok) {
 	singsub(&tmp);
@@ -506,6 +505,7 @@ execrepeat(Estate state, UNUSED(int do_exec))
     count = mathevali(tmp);
     if (errflag)
 	return 1;
+    lastval = 0;
     pushheap();
     cmdpush(CS_REPEAT);
     loops++;
diff --git a/Test/A05execution.ztst b/Test/A05execution.ztst
index 20a594b68..e07bd9cd9 100644
--- a/Test/A05execution.ztst
+++ b/Test/A05execution.ztst
@@ -401,3 +401,10 @@ F:anonymous function, and a descriptor leak when backgrounding a pipeline
  (( exit 130 ) | { sleep 1; echo hello })
 0:exit code 130 isn't mistaken for a signal (unit test for workers/46060)
 >hello
+
+  (exit 3); repeat '?' echo y
+0:'repeat' loop can use lastval in the count
+>y
+>y
+>y
+




Messages sorted by: Reverse Date, Date, Thread, Author