diff options
| -rw-r--r-- | lapi.c | 8 | ||||
| -rw-r--r-- | ltable.h | 3 |
2 files changed, 5 insertions, 6 deletions
| @@ -567,18 +567,18 @@ LUA_API void lua_error (lua_State *L, const char *s) { | |||
| 567 | 567 | ||
| 568 | LUA_API int lua_next (lua_State *L, int index) { | 568 | LUA_API int lua_next (lua_State *L, int index) { |
| 569 | StkId t; | 569 | StkId t; |
| 570 | int more; | ||
| 570 | lua_lock(L); | 571 | lua_lock(L); |
| 571 | t = luaA_index(L, index); | 572 | t = luaA_index(L, index); |
| 572 | api_check(L, ttype(t) == LUA_TTABLE); | 573 | api_check(L, ttype(t) == LUA_TTABLE); |
| 573 | index = luaH_index(L, hvalue(t), luaA_index(L, -1)); | 574 | more = luaH_next(L, hvalue(t), L->top - 1); |
| 574 | index = (luaH_nexti(hvalue(t), index, L->top - 1) != -1); | 575 | if (more) { |
| 575 | if (index) { | ||
| 576 | api_incr_top(L); | 576 | api_incr_top(L); |
| 577 | } | 577 | } |
| 578 | else /* no more elements */ | 578 | else /* no more elements */ |
| 579 | L->top -= 1; /* remove key */ | 579 | L->top -= 1; /* remove key */ |
| 580 | lua_unlock(L); | 580 | lua_unlock(L); |
| 581 | return index; | 581 | return more; |
| 582 | } | 582 | } |
| 583 | 583 | ||
| 584 | 584 | ||
| @@ -24,8 +24,7 @@ const TObject *luaH_get (Table *t, const TObject *key); | |||
| 24 | void luaH_set (lua_State *L, Table *t, const TObject *key, const TObject *val); | 24 | void luaH_set (lua_State *L, Table *t, const TObject *key, const TObject *val); |
| 25 | Table *luaH_new (lua_State *L, int narray, int lnhash); | 25 | Table *luaH_new (lua_State *L, int narray, int lnhash); |
| 26 | void luaH_free (lua_State *L, Table *t); | 26 | void luaH_free (lua_State *L, Table *t); |
| 27 | int luaH_index (lua_State *L, Table *t, const TObject *key); | 27 | int luaH_next (lua_State *L, Table *t, TObject *key); |
| 28 | int luaH_nexti (Table *t, int i, TObject *where); | ||
| 29 | 28 | ||
| 30 | /* exported only for debugging */ | 29 | /* exported only for debugging */ |
| 31 | Node *luaH_mainposition (const Table *t, const TObject *key); | 30 | Node *luaH_mainposition (const Table *t, const TObject *key); |
