summaryrefslogtreecommitdiff
path: root/ltm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2003-12-01 16:22:56 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2003-12-01 16:22:56 -0200
commitaf850484a9e01b46b04e4c666f9a9e91308d81c7 (patch)
tree38d03f647ddc95d430e4600e432598b7b9d07cd0 /ltm.c
parent1d10acb35500df47d6052164e6c56476f520232e (diff)
downloadlua-af850484a9e01b46b04e4c666f9a9e91308d81c7.tar.gz
lua-af850484a9e01b46b04e4c666f9a9e91308d81c7.tar.bz2
lua-af850484a9e01b46b04e4c666f9a9e91308d81c7.zip
default metatable can be NULL
Diffstat (limited to 'ltm.c')
-rw-r--r--ltm.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/ltm.c b/ltm.c
index 5687e28b..b8fbb1f9 100644
--- a/ltm.c
+++ b/ltm.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ltm.c,v 1.105 2002/12/04 17:38:31 roberto Exp roberto $ 2** $Id: ltm.c,v 1.106 2003/04/03 13:35:34 roberto Exp roberto $
3** Tag methods 3** Tag methods
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -57,14 +57,17 @@ const TObject *luaT_gettm (Table *events, TMS event, TString *ename) {
57 57
58 58
59const TObject *luaT_gettmbyobj (lua_State *L, const TObject *o, TMS event) { 59const TObject *luaT_gettmbyobj (lua_State *L, const TObject *o, TMS event) {
60 TString *ename = G(L)->tmname[event]; 60 Table *mt;
61 switch (ttype(o)) { 61 switch (ttype(o)) {
62 case LUA_TTABLE: 62 case LUA_TTABLE:
63 return luaH_getstr(hvalue(o)->metatable, ename); 63 mt = hvalue(o)->metatable;
64 break;
64 case LUA_TUSERDATA: 65 case LUA_TUSERDATA:
65 return luaH_getstr(uvalue(o)->uv.metatable, ename); 66 mt = uvalue(o)->uv.metatable;
67 break;
66 default: 68 default:
67 return &luaO_nilobject; 69 mt = NULL;
68 } 70 }
71 return (mt ? luaH_getstr(mt, G(L)->tmname[event]) : &luaO_nilobject);
69} 72}
70 73