diff --git a/lapi.c b/lapi.c index b1a95b79..78a9dd3b 100644 --- a/lapi.c +++ b/lapi.c @@ -1,5 +1,5 @@ /* -** $Id: lapi.c,v 1.233 2003/03/14 18:59:21 roberto Exp roberto $ +** $Id: lapi.c,v 1.234 2003/04/03 13:35:34 roberto Exp roberto $ ** Lua API ** See Copyright Notice in lua.h */ @@ -370,6 +370,7 @@ LUA_API const void *lua_topointer (lua_State *L, int idx) { switch (ttype(o)) { case LUA_TTABLE: return hvalue(o); case LUA_TFUNCTION: return clvalue(o); + case LUA_TTHREAD: return thvalue(o); case LUA_TUSERDATA: case LUA_TLIGHTUSERDATA: return lua_touserdata(L, idx); @@ -520,22 +521,22 @@ LUA_API void lua_newtable (lua_State *L) { LUA_API int lua_getmetatable (lua_State *L, int objindex) { - StkId obj; - Table *mt; + const TObject *obj; + Table *mt = NULL; int res; lua_lock(L); obj = luaA_indexAcceptable(L, objindex); - switch (ttype(obj)) { - case LUA_TTABLE: - mt = hvalue(obj)->metatable; - break; - case LUA_TUSERDATA: - mt = uvalue(obj)->uv.metatable; - break; - default: - mt = hvalue(defaultmeta(L)); + if (obj != NULL) { + switch (ttype(obj)) { + case LUA_TTABLE: + mt = hvalue(obj)->metatable; + break; + case LUA_TUSERDATA: + mt = uvalue(obj)->uv.metatable; + break; + } } - if (mt == hvalue(defaultmeta(L))) + if (mt == NULL || mt == hvalue(defaultmeta(L))) res = 0; else { sethvalue(L->top, mt);