|
@@ -388,9 +388,10 @@ static void rethook (lua_State *L, CallInfo *ci, int nres) {
|
|
|
** an error if there is no '__call' metafield.
|
|
|
*/
|
|
|
StkId luaD_tryfuncTM (lua_State *L, StkId func) {
|
|
|
- const TValue *tm = luaT_gettmbyobj(L, s2v(func), TM_CALL);
|
|
|
+ const TValue *tm;
|
|
|
StkId p;
|
|
|
checkstackGCp(L, 1, func); /* space for metamethod */
|
|
|
+ tm = luaT_gettmbyobj(L, s2v(func), TM_CALL); /* (after previous GC) */
|
|
|
if (l_unlikely(ttisnil(tm)))
|
|
|
luaG_callerror(L, s2v(func)); /* nothing to call */
|
|
|
for (p = L->top; p > func; p--) /* open space for metamethod */
|