summaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-12-04 15:01:42 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-12-04 15:01:42 -0200
commit28d829c86712ce5bc453feccc5129a32f78d80c0 (patch)
tree58197e763ca643bbe4a042372927bf81092b141c /lvm.c
parent6d04537ea660fd12fc16c328366b701fabaf4919 (diff)
downloadlua-github-28d829c86712ce5bc453feccc5129a32f78d80c0.tar.gz
Calls cannot be tail in the scope of a to-be-closed variable
A to-be-closed variable must be closed when a block ends, so even a 'return foo()' cannot directly returns the results of 'foo'; the function must close the scope before returning.
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lvm.c b/lvm.c
index 50d967c6..fc8722a8 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1565,7 +1565,7 @@ void luaV_execute (lua_State *L, CallInfo *ci) {
if (nparams1) /* vararg function? */
delta = ci->u.l.nextraargs + nparams1;
/* close upvalues from current call */
- ProtectNT(luaF_close(L, base, LUA_OK));
+ luaF_close(L, base, -1); /* (no to-be-closed vars. here) */
updatestack(ci);
}
if (!ttisfunction(s2v(ra))) { /* not a function? */