aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/lvm.c b/lvm.c
index db4ba548..9146a08c 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lvm.c,v 1.155 2001/01/19 13:20:30 roberto Exp roberto $ 2** $Id: lvm.c,v 1.156 2001/01/24 15:45:33 roberto Exp roberto $
3** Lua virtual machine 3** Lua virtual machine
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -174,8 +174,9 @@ void luaV_settable (lua_State *L, StkId t, StkId key) {
174 174
175const TObject *luaV_getglobal (lua_State *L, TString *s) { 175const TObject *luaV_getglobal (lua_State *L, TString *s) {
176 const TObject *value = luaH_getstr(L->gt, s); 176 const TObject *value = luaH_getstr(L->gt, s);
177 Closure *tm = luaT_gettmbyObj(G(L), value, TM_GETGLOBAL); 177 Closure *tm;
178 if (tm == NULL) /* is there a tag method? */ 178 if (!HAS_TM_GETGLOBAL(L, ttype(value)) || /* is there a tag method? */
179 (tm = luaT_gettmbyObj(G(L), value, TM_GETGLOBAL)) == NULL)
179 return value; /* default behavior */ 180 return value; /* default behavior */
180 else { /* tag method */ 181 else { /* tag method */
181 luaD_checkstack(L, 3); 182 luaD_checkstack(L, 3);
@@ -191,8 +192,9 @@ const TObject *luaV_getglobal (lua_State *L, TString *s) {
191 192
192void luaV_setglobal (lua_State *L, TString *s) { 193void luaV_setglobal (lua_State *L, TString *s) {
193 TObject *oldvalue = luaH_setstr(L, L->gt, s); 194 TObject *oldvalue = luaH_setstr(L, L->gt, s);
194 Closure *tm = luaT_gettmbyObj(G(L), oldvalue, TM_SETGLOBAL); 195 Closure *tm;
195 if (tm == NULL) { /* no tag methods? */ 196 if (!HAS_TM_SETGLOBAL(L, ttype(oldvalue)) || /* no tag methods? */
197 (tm = luaT_gettmbyObj(G(L), oldvalue, TM_SETGLOBAL)) == NULL) {
196 setobj(oldvalue, L->top - 1); /* raw set */ 198 setobj(oldvalue, L->top - 1); /* raw set */
197 } 199 }
198 else { /* call tag method */ 200 else { /* call tag method */