lua

A copy of the Lua development repository
Log | Files | Refs | README

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:
Mldebug.c | 4+++-
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: