aboutsummaryrefslogtreecommitdiff
path: root/ltable.c
diff options
context:
space:
mode:
Diffstat (limited to 'ltable.c')
-rw-r--r--ltable.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/ltable.c b/ltable.c
index ba1ccbe8..f8eb931b 100644
--- a/ltable.c
+++ b/ltable.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ltable.c,v 1.62 2000/12/28 12:55:41 roberto Exp roberto $ 2** $Id: ltable.c,v 1.63 2001/01/10 18:56:11 roberto Exp roberto $
3** Lua tables (hash) 3** Lua tables (hash)
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -143,8 +143,7 @@ void luaH_remove (Hash *t, TObject *key) {
143 return; /* give up; (to avoid overflow) */ 143 return; /* give up; (to avoid overflow) */
144 n += t->size; 144 n += t->size;
145 } 145 }
146 ttype(key) = LUA_TNUMBER; 146 setnvalue(key, n);
147 nvalue(key) = n;
148 LUA_ASSERT(luaH_mainposition(t, key) == mp, "cannot change hash"); 147 LUA_ASSERT(luaH_mainposition(t, key) == mp, "cannot change hash");
149 } 148 }
150} 149}
@@ -156,7 +155,8 @@ static void setnodevector (lua_State *L, Hash *t, luint32 size) {
156 lua_error(L, "table overflow"); 155 lua_error(L, "table overflow");
157 t->node = luaM_newvector(L, size, Node); 156 t->node = luaM_newvector(L, size, Node);
158 for (i=0; i<(int)size; i++) { 157 for (i=0; i<(int)size; i++) {
159 ttype(&t->node[i].key) = ttype(&t->node[i].val) = LUA_TNIL; 158 setnilvalue(&t->node[i].key);
159 setnilvalue(&t->node[i].val);
160 t->node[i].next = NULL; 160 t->node[i].next = NULL;
161 } 161 }
162 t->size = size; 162 t->size = size;
@@ -212,7 +212,7 @@ static void rehash (lua_State *L, Hash *t) {
212 for (i=0; i<oldsize; i++) { 212 for (i=0; i<oldsize; i++) {
213 Node *old = nold+i; 213 Node *old = nold+i;
214 if (ttype(&old->val) != LUA_TNIL) 214 if (ttype(&old->val) != LUA_TNIL)
215 *luaH_set(L, t, &old->key) = old->val; 215 setobj(luaH_set(L, t, &old->key), &old->val);
216 } 216 }
217 luaM_freearray(L, nold, oldsize, Node); /* free old array */ 217 luaM_freearray(L, nold, oldsize, Node); /* free old array */
218} 218}
@@ -243,7 +243,7 @@ static TObject *newkey (lua_State *L, Hash *t, Node *mp, const TObject *key) {
243 mp = n; 243 mp = n;
244 } 244 }
245 } 245 }
246 mp->key = *key; 246 setobj(&mp->key, key);
247 for (;;) { /* correct `firstfree' */ 247 for (;;) { /* correct `firstfree' */
248 if (ttype(&t->firstfree->key) == LUA_TNIL) 248 if (ttype(&t->firstfree->key) == LUA_TNIL)
249 return &mp->val; /* OK; table still has a free place */ 249 return &mp->val; /* OK; table still has a free place */
@@ -279,8 +279,7 @@ TObject *luaH_setnum (lua_State *L, Hash *t, lua_Number key) {
279 else n = n->next; 279 else n = n->next;
280 } while (n); 280 } while (n);
281 /* `key' not found; must insert it */ 281 /* `key' not found; must insert it */
282 ttype(&kobj) = LUA_TNUMBER; 282 setnvalue(&kobj, key);
283 nvalue(&kobj) = key;
284 return newkey(L, t, mp, &kobj); 283 return newkey(L, t, mp, &kobj);
285} 284}
286 285
@@ -295,8 +294,7 @@ TObject *luaH_setstr (lua_State *L, Hash *t, TString *key) {
295 else n = n->next; 294 else n = n->next;
296 } while (n); 295 } while (n);
297 /* `key' not found; must insert it */ 296 /* `key' not found; must insert it */
298 ttype(&kobj) = LUA_TSTRING; 297 setsvalue(&kobj, key);
299 tsvalue(&kobj) = key;
300 return newkey(L, t, mp, &kobj); 298 return newkey(L, t, mp, &kobj);
301} 299}
302 300