mirror of https://github.com/rusefi/lua.git
bug (with compat on): 'ipairs' can work with any type that provides
an __index; so, 'pairsmeta' should not check for tables. ('pairs' already checks for tables through 'next'.)
This commit is contained in:
parent
aeb4c6fff1
commit
dbb6f11e8e
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lbaselib.c,v 1.312 2015/10/29 15:21:04 roberto Exp roberto $
|
** $Id: lbaselib.c,v 1.313 2016/04/11 19:18:40 roberto Exp roberto $
|
||||||
** Basic library
|
** Basic library
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -208,8 +208,8 @@ static int luaB_type (lua_State *L) {
|
||||||
|
|
||||||
static int pairsmeta (lua_State *L, const char *method, int iszero,
|
static int pairsmeta (lua_State *L, const char *method, int iszero,
|
||||||
lua_CFunction iter) {
|
lua_CFunction iter) {
|
||||||
|
luaL_checkany(L, 1);
|
||||||
if (luaL_getmetafield(L, 1, method) == LUA_TNIL) { /* no metamethod? */
|
if (luaL_getmetafield(L, 1, method) == LUA_TNIL) { /* no metamethod? */
|
||||||
luaL_checktype(L, 1, LUA_TTABLE); /* argument must be a table */
|
|
||||||
lua_pushcfunction(L, iter); /* will return generator, */
|
lua_pushcfunction(L, iter); /* will return generator, */
|
||||||
lua_pushvalue(L, 1); /* state, */
|
lua_pushvalue(L, 1); /* state, */
|
||||||
if (iszero) lua_pushinteger(L, 0); /* and initial value */
|
if (iszero) lua_pushinteger(L, 0); /* and initial value */
|
||||||
|
|
Loading…
Reference in New Issue