From 9f0d62ad9f7ace2c92bbdf11a8d0fb908f6feb1c Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 26 Nov 2007 14:57:33 -0200 Subject: BUG: table.remove removes last element of a table when given an out-of-bound index --- ltablib.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'ltablib.c') diff --git a/ltablib.c b/ltablib.c index f7479545..437270ad 100644 --- a/ltablib.c +++ b/ltablib.c @@ -1,5 +1,5 @@ /* -** $Id: ltablib.c,v 1.40 2007/06/21 13:50:53 roberto Exp roberto $ +** $Id: ltablib.c,v 1.41 2007/09/12 20:53:24 roberto Exp roberto $ ** Library for Table Manipulation ** See Copyright Notice in lua.h */ @@ -110,7 +110,8 @@ static int tinsert (lua_State *L) { static int tremove (lua_State *L) { int e = aux_getn(L, 1); int pos = luaL_optint(L, 2, e); - if (e == 0) return 0; /* table is `empty' */ + if (!(1 <= pos && pos <= e)) /* position is outside bounds? */ + return 0; /* nothing to remove */ lua_rawgeti(L, 1, pos); /* result = t[pos] */ for ( ;pos