diff src/luan/LuaClosure.java @ 24:7ee247560db5

add VarArgs git-svn-id: https://luan-java.googlecode.com/svn/trunk@25 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Thu, 06 Dec 2012 04:40:54 +0000
parents 1e37f22a34c8
children
line wrap: on
line diff
--- a/src/luan/LuaClosure.java	Thu Dec 06 00:35:13 2012 +0000
+++ b/src/luan/LuaClosure.java	Thu Dec 06 04:40:54 2012 +0000
@@ -14,7 +14,18 @@
 	public Object[] call(LuaState lua,Object... args) throws LuaException {
 		Chunk chunk = this.chunk;
 		while(true) {
-			Object[] stack = lua.newStack(chunk.stackSize);
+			Object[] varArgs = null;
+			if( chunk.isVarArg ) {
+				if( args.length > chunk.numArgs ) {
+					varArgs = new Object[ args.length - chunk.numArgs ];
+					for( int i=0; i<varArgs.length; i++ ) {
+						varArgs[i] = args[chunk.numArgs+i];
+					}
+				} else {
+					varArgs = LuaFunction.EMPTY_RTN;
+				}
+			}
+			Object[] stack = lua.newStack(chunk.stackSize,varArgs);
 			final int n = Math.min(args.length,chunk.numArgs);
 			for( int i=0; i<n; i++ ) {
 				stack[i] = args[i];