From c2aa7bd72d620731b5a54b532523dbd9f8e1bfc3 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 25 Sep 2000 11:48:42 -0300 Subject: [PATCH] bug: lua_gettable does not get key from stack top --- bugs | 5 +++++ ltests.c | 8 +++++++- lvm.c | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/bugs b/bugs index 780b164a..b668cc00 100644 --- a/bugs +++ b/bugs @@ -208,3 +208,8 @@ Fri Sep 22 15:12:37 EST 2000 >> `read("*w")' should return nil at EOF (by roberto; since 4.0b) +** lvm.c +Mon Sep 25 11:47:48 EST 2000 +>> lua_gettable does not get key from stack top +(by Philip Yi; since 4.0b) + diff --git a/ltests.c b/ltests.c index 04cd1b40..fe0ed439 100644 --- a/ltests.c +++ b/ltests.c @@ -1,5 +1,5 @@ /* -** $Id: ltests.c,v 1.41 2000/09/11 19:42:57 roberto Exp roberto $ +** $Id: ltests.c,v 1.42 2000/09/14 14:09:31 roberto Exp roberto $ ** Internal Module for Debugging of the Lua Implementation ** See Copyright Notice in lua.h */ @@ -410,6 +410,12 @@ static int testC (lua_State *L) { else if EQ("insert") { lua_insert(L, getnum); } + else if EQ("gettable") { + lua_gettable(L, getnum); + } + else if EQ("settable") { + lua_settable(L, getnum); + } else if EQ("next") { lua_next(L, -2); } diff --git a/lvm.c b/lvm.c index 22ff9ae7..365fb42d 100644 --- a/lvm.c +++ b/lvm.c @@ -1,5 +1,5 @@ /* -** $Id: lvm.c,v 1.135 2000/09/11 17:38:42 roberto Exp roberto $ +** $Id: lvm.c,v 1.136 2000/09/20 17:57:08 roberto Exp roberto $ ** Lua virtual machine ** See Copyright Notice in lua.h */ @@ -120,7 +120,7 @@ const TObject *luaV_gettable (lua_State *L, StkId t) { ((tg = hvalue(t)->htag) == TAG_TABLE || /* with default tag? */ ttype(luaT_getim(L, tg, IM_GETTABLE)) == TAG_NIL)) { /* or no TM? */ /* do a primitive get */ - const TObject *h = luaH_get(L, hvalue(t), t+1); + const TObject *h = luaH_get(L, hvalue(t), L->top-1); /* result is no nil or there is no `index' tag method? */ if (ttype(h) != TAG_NIL || (ttype(im=luaT_getim(L, tg, IM_INDEX)) == TAG_NIL))