diff options
Diffstat (limited to 'ltm.c')
-rw-r--r-- | ltm.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: ltm.c,v 1.75 2001/07/23 19:56:00 roberto Exp roberto $ | 2 | ** $Id: ltm.c,v 1.76 2001/07/24 22:39: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 | */ |
@@ -84,11 +84,13 @@ int luaT_newtag (lua_State *L, const l_char *name, int basictype) { | |||
84 | MAX_INT, l_s("tag table overflow")); | 84 | MAX_INT, l_s("tag table overflow")); |
85 | tag = G(L)->ntag; | 85 | tag = G(L)->ntag; |
86 | if (name) { | 86 | if (name) { |
87 | TObject *v; | 87 | const TObject *v; |
88 | TObject otag; | ||
88 | ts = luaS_new(L, name); | 89 | ts = luaS_new(L, name); |
89 | v = luaH_setstr(L, G(L)->type2tag, ts); | 90 | v = luaH_getstr(G(L)->type2tag, ts); |
90 | if (ttype(v) == LUA_TNUMBER) return (int)nvalue(v); | 91 | if (ttype(v) == LUA_TNUMBER) return (int)nvalue(v); |
91 | setnvalue(v, tag); | 92 | setnvalue(&otag, tag); |
93 | luaH_setstr(L, G(L)->type2tag, ts, &otag); | ||
92 | } | 94 | } |
93 | for (i=0; i<TM_N; i++) | 95 | for (i=0; i<TM_N; i++) |
94 | luaT_gettm(G(L), tag, i) = NULL; | 96 | luaT_gettm(G(L), tag, i) = NULL; |