commit ab75bd23eef194c2aa9123765e3d13c820cf8af0
parent cee94df6e081b625a353bdd9a716cb8ef625e4cf
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Mon, 28 Sep 2009 09:36:53 -0300
handle extended opcodes (with OP_EXTRAARG) when checking metamethod
calls
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/ldebug.c b/ldebug.c
@@ -1,5 +1,5 @@
/*
-** $Id: ldebug.c,v 2.53 2009/08/07 16:17:41 roberto Exp roberto $
+** $Id: ldebug.c,v 2.54 2009/09/23 20:33:05 roberto Exp roberto $
** Debug Interface
** See Copyright Notice in lua.h
*/
@@ -386,6 +386,8 @@ static const char *getfuncname (lua_State *L, CallInfo *ci, const char **name) {
return NULL; /* calling function is not Lua (or is unknown) */
ci = ci->previous; /* calling function */
i = ci_func(ci)->l.p->code[currentpc(ci)];
+ if (GET_OPCODE(i) == OP_EXTRAARG) /* extra argument? */
+ i = ci_func(ci)->l.p->code[currentpc(ci) - 1]; /* get 'real' instruction */
switch (GET_OPCODE(i)) {
case OP_CALL:
case OP_TAILCALL: