diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2003-12-01 16:22:56 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2003-12-01 16:22:56 -0200 |
commit | af850484a9e01b46b04e4c666f9a9e91308d81c7 (patch) | |
tree | 38d03f647ddc95d430e4600e432598b7b9d07cd0 /ltm.c | |
parent | 1d10acb35500df47d6052164e6c56476f520232e (diff) | |
download | lua-af850484a9e01b46b04e4c666f9a9e91308d81c7.tar.gz lua-af850484a9e01b46b04e4c666f9a9e91308d81c7.tar.bz2 lua-af850484a9e01b46b04e4c666f9a9e91308d81c7.zip |
default metatable can be NULL
Diffstat (limited to 'ltm.c')
-rw-r--r-- | ltm.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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 | ||
59 | const TObject *luaT_gettmbyobj (lua_State *L, const TObject *o, TMS event) { | 59 | const 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 | ||