summaryrefslogtreecommitdiff
path: root/ltablib.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2016-02-25 16:41:54 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2016-02-25 16:41:54 -0300
commit7d6b78ee7934a00fbc69ab04ba36aa420db8ba76 (patch)
treea655966993d4879491b66b150fb3089e3d4dcf8b /ltablib.c
parent5f3ad5731ebf6d80a4282462d7ce19d6906b8a2d (diff)
downloadlua-github-7d6b78ee7934a00fbc69ab04ba36aa420db8ba76.tar.gz
in 'table.move', destination table can be source table even if
given as an explicit extra argument
Diffstat (limited to 'ltablib.c')
-rw-r--r--ltablib.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/ltablib.c b/ltablib.c
index ace60547..588bf40d 100644
--- a/ltablib.c
+++ b/ltablib.c
@@ -1,5 +1,5 @@
/*
-** $Id: ltablib.c,v 1.91 2015/12/14 11:57:38 roberto Exp roberto $
+** $Id: ltablib.c,v 1.92 2016/02/08 12:55:19 roberto Exp roberto $
** Library for Table Manipulation
** See Copyright Notice in lua.h
*/
@@ -139,7 +139,7 @@ static int tmove (lua_State *L) {
n = e - f + 1; /* number of elements to move */
luaL_argcheck(L, t <= LUA_MAXINTEGER - n + 1, 4,
"destination wrap around");
- if (t > e || t <= f || tt != 1) {
+ if (t > e || t <= f || (tt != 1 && !lua_compare(L, 1, tt, LUA_OPEQ))) {
for (i = 0; i < n; i++) {
lua_geti(L, 1, f + i);
lua_seti(L, tt, t + i);
@@ -152,7 +152,7 @@ static int tmove (lua_State *L) {
}
}
}
- lua_pushvalue(L, tt); /* return "to table" */
+ lua_pushvalue(L, tt); /* return destination table */
return 1;
}