From b57eb247bab4d03a39a89bb78c4e8b37e0e064ab Mon Sep 17 00:00:00 2001 From: Enyby Date: Sat, 2 Nov 2019 15:18:48 +0200 Subject: [PATCH] Fix table.unpack. --- src/core/org/luaj/vm2/lib/TableLib.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/core/org/luaj/vm2/lib/TableLib.java b/src/core/org/luaj/vm2/lib/TableLib.java index 02b82ad4..a1f7db80 100644 --- a/src/core/org/luaj/vm2/lib/TableLib.java +++ b/src/core/org/luaj/vm2/lib/TableLib.java @@ -140,11 +140,9 @@ public class TableLib extends TwoArgFunction { static class unpack extends VarArgFunction { public Varargs invoke(Varargs args) { LuaTable t = args.checktable(1); - switch (args.narg()) { - case 1: return t.unpack(); - case 2: return t.unpack(args.checkint(2)); - default: return t.unpack(args.checkint(2), args.checkint(3)); - } + // do not waste resource for calc rawlen if arg3 is not nil + int len = args.arg(3).isnil() ? t.rawlen() : 0; + return t.unpack(args.optint(2, 1), args.optint(3, len)); } } }