Explorar o código

optional limits for table.concat

Roberto Ierusalimschy %!s(int64=23) %!d(string=hai) anos
pai
achega
0fd91b1b08
Modificáronse 1 ficheiros con 6 adicións e 4 borrados
  1. 6 4
      ltablib.c

+ 6 - 4
ltablib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ltablib.c,v 1.12 2002/08/06 18:01:50 roberto Exp roberto $
+** $Id: ltablib.c,v 1.13 2002/10/04 14:30:31 roberto Exp roberto $
 ** Library for Table Manipulation
 ** See Copyright Notice in lua.h
 */
@@ -149,12 +149,14 @@ static int luaB_tremove (lua_State *L) {
 
 static int str_concat (lua_State *L) {
   luaL_Buffer b;
-  int n = aux_getn(L, 1);
   size_t lsep;
   const char *sep = luaL_opt_lstr(L, 2, "", &lsep);
-  int i;
+  int i = luaL_opt_int(L, 3, 1);
+  int n = luaL_opt_int(L, 4, 0);
+  luaL_check_type(L, 1, LUA_TTABLE);
+  if (n == 0) n = aux_getn(L, 1);
   luaL_buffinit(L, &b);
-  for (i=1; i<=n; i++) {
+  for (; i <= n; i++) {
     lua_rawgeti(L, 1, i);
     luaL_arg_check(L, lua_isstring(L, -1), 1, "table contains non-strings");
     luaL_addvalue(&b);