diff options
Diffstat (limited to 'ldo.c')
-rw-r--r-- | ldo.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: ldo.c,v 1.78 2000/06/12 13:52:05 roberto Exp roberto $ | 2 | ** $Id: ldo.c,v 1.79 2000/06/16 17:16:34 roberto Exp roberto $ |
3 | ** Stack and Call structure of Lua | 3 | ** Stack and Call structure of Lua |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -185,10 +185,14 @@ void luaD_call (lua_State *L, StkId func, int nResults) { | |||
185 | retry: /* for `function' tag method */ | 185 | retry: /* for `function' tag method */ |
186 | switch (ttype(func)) { | 186 | switch (ttype(func)) { |
187 | case TAG_LCLOSURE: { | 187 | case TAG_LCLOSURE: { |
188 | CallInfo ci; | ||
189 | ci.func = clvalue(func); | ||
190 | ci.pc = 0; | ||
188 | ttype(func) = TAG_LMARK; | 191 | ttype(func) = TAG_LMARK; |
192 | infovalue(func) = &ci; | ||
189 | if (callhook) | 193 | if (callhook) |
190 | luaD_callHook(L, func, callhook, "call"); | 194 | luaD_callHook(L, func, callhook, "call"); |
191 | firstResult = luaV_execute(L, clvalue(func), func+1); | 195 | firstResult = luaV_execute(L, ci.func, func+1); |
192 | break; | 196 | break; |
193 | } | 197 | } |
194 | case TAG_CCLOSURE: { | 198 | case TAG_CCLOSURE: { |