aboutsummaryrefslogtreecommitdiff
path: root/jim.h
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2015-06-03 08:13:08 +1000
committerSteve Bennett <steveb@workware.net.au>2015-06-03 10:53:24 +1000
commitb927888eaee48eba3ce78c1887120cc219275775 (patch)
tree1127666f0b5ee450c6065f5b15321a0dc15e4fc7 /jim.h
parentadcb761134c80285073a2c4728ab545dec101ff2 (diff)
downloadjimtcl-b927888eaee48eba3ce78c1887120cc219275775.zip
jimtcl-b927888eaee48eba3ce78c1887120cc219275775.tar.gz
jimtcl-b927888eaee48eba3ce78c1887120cc219275775.tar.bz2
chained tailcalls were not always being run
There is no need to protect against merging tailcalls across uplevel since any tailcalls should already be fully resolved. This fixes a problem with the following only running one loop: foreach a {b c d} { command-with-tailcall $a } In particular: dict for {a b} {1 2 3 4} { puts $a,$b } Reported-by: Jon Povey <jon.povey@emsolutions.com.au> Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.h')
-rw-r--r--jim.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/jim.h b/jim.h
index ece4b74..fa8f5b4 100644
--- a/jim.h
+++ b/jim.h
@@ -437,7 +437,6 @@ typedef struct Jim_CallFrame {
Jim_Obj *fileNameObj; /* file and line of caller of this proc (if available) */
int line;
Jim_Stack *localCommands; /* commands to be destroyed when the call frame is destroyed */
- int tailcall; /* non-zero if a tailcall is being evaluated at this level */
struct Jim_Obj *tailcallObj; /* Pending tailcall invocation */
struct Jim_Cmd *tailcallCmd; /* Resolved command for pending tailcall invocation */
} Jim_CallFrame;