seqlua
diff seqlualib.c @ 32:3ff7cec8d3ce
Do not respect __len metamethods
author | jbe |
---|---|
date | Sun Aug 24 00:00:43 2014 +0200 (2014-08-24) |
parents | 4fc9090ada1d |
children | 332216604f83 |
line diff
1.1 --- a/seqlualib.c Sat Aug 23 23:35:10 2014 +0200 1.2 +++ b/seqlualib.c Sun Aug 24 00:00:43 2014 +0200 1.3 @@ -15,12 +15,8 @@ 1.4 } else { 1.5 if (lua_type(L, idx) == LUA_TFUNCTION) { 1.6 iter->itertype = SEQLUA_ITERTYPE_CALL; 1.7 - } else if ( 1.8 - luaL_getmetafield(L, idx, "__index") || 1.9 - luaL_getmetafield(L, idx, "__len") 1.10 - ) { 1.11 + } else if (luaL_getmetafield(L, idx, "__index")) { 1.12 lua_pop(L, 1); 1.13 - iter->len = luaL_len(L, idx); 1.14 iter->itertype = SEQLUA_ITERTYPE_INDEX; 1.15 } else { 1.16 luaL_checktype(L, idx, LUA_TTABLE); 1.17 @@ -56,13 +52,9 @@ 1.18 lua_call(L, 0, 1); 1.19 break; 1.20 case SEQLUA_ITERTYPE_INDEX: 1.21 - if (i > iter->len) { 1.22 - lua_pop(L, 3); 1.23 - return 0; 1.24 - } 1.25 lua_pushinteger(L, i); 1.26 lua_gettable(L, iter->idx); 1.27 - return 1; 1.28 + break; 1.29 case SEQLUA_ITERTYPE_RAW: 1.30 lua_rawgeti(L, iter->idx, i); 1.31 break;