diff options
Diffstat (limited to 'ltable.c')
-rw-r--r-- | ltable.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: ltable.c,v 2.91 2014/06/26 16:17:35 roberto Exp roberto $ | 2 | ** $Id: ltable.c,v 2.92 2014/07/18 13:36:14 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 | */ |
@@ -309,7 +309,7 @@ static void setnodevector (lua_State *L, Table *t, int size) { | |||
309 | for (i=0; i<size; i++) { | 309 | for (i=0; i<size; i++) { |
310 | Node *n = gnode(t, i); | 310 | Node *n = gnode(t, i); |
311 | gnext(n) = 0; | 311 | gnext(n) = 0; |
312 | setnilvalue(gkey(n)); | 312 | setnilvalue(wgkey(n)); |
313 | setnilvalue(gval(n)); | 313 | setnilvalue(gval(n)); |
314 | } | 314 | } |
315 | } | 315 | } |
@@ -466,7 +466,7 @@ TValue *luaH_newkey (lua_State *L, Table *t, const TValue *key) { | |||
466 | mp = f; | 466 | mp = f; |
467 | } | 467 | } |
468 | } | 468 | } |
469 | setobj2t(L, gkey(mp), key); | 469 | setkey(L, &mp->i_key, key); |
470 | luaC_barrierback(L, t, key); | 470 | luaC_barrierback(L, t, key); |
471 | lua_assert(ttisnil(gval(mp))); | 471 | lua_assert(ttisnil(gval(mp))); |
472 | return gval(mp); | 472 | return gval(mp); |
@@ -503,7 +503,8 @@ const TValue *luaH_getstr (Table *t, TString *key) { | |||
503 | Node *n = hashstr(t, key); | 503 | Node *n = hashstr(t, key); |
504 | lua_assert(key->tt == LUA_TSHRSTR); | 504 | lua_assert(key->tt == LUA_TSHRSTR); |
505 | for (;;) { /* check whether `key' is somewhere in the chain */ | 505 | for (;;) { /* check whether `key' is somewhere in the chain */ |
506 | if (ttisshrstring(gkey(n)) && eqshrstr(tsvalue(gkey(n)), key)) | 506 | const TValue *k = gkey(n); |
507 | if (ttisshrstring(k) && eqshrstr(tsvalue(k), key)) | ||
507 | return gval(n); /* that's it */ | 508 | return gval(n); /* that's it */ |
508 | else { | 509 | else { |
509 | int nx = gnext(n); | 510 | int nx = gnext(n); |