From 5fb097d107f68b600378c804e86c21608d1e6acb Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Thu, 2 Aug 2007 03:00:46 +0000 Subject: [PATCH] Fix varargs handling --- src/main/java/lua/value/LTable.java | 12 ++++++------ src/test/res/compile.sh | 9 ++++----- src/test/res/test3.lua | 2 -- src/test/res/test3.luac | Bin 4117 -> 4544 bytes 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/main/java/lua/value/LTable.java b/src/main/java/lua/value/LTable.java index 772b68ac..5af96843 100644 --- a/src/main/java/lua/value/LTable.java +++ b/src/main/java/lua/value/LTable.java @@ -16,7 +16,7 @@ public class LTable extends LValue { /** Metatable tag for intercepting table sets */ private static final LString TM_NEWINDEX = new LString("__newindex"); - private Hashtable m_hash = new Hashtable(); + public Hashtable m_hash = new Hashtable(); private Vector m_vector; // if non-null then size() > 0 @@ -53,16 +53,16 @@ public class LTable extends LValue { if (m_vector == null) { if (iKey == 0) { m_vector = new Vector(); - m_vector.add(val); + m_vector.addElement(val); return; } } else if (iKey >= 0) { int size = m_vector.size(); if (iKey < size) { - m_vector.set(iKey, val); + m_vector.setElementAt(val, iKey); return; } else if (iKey == size) { - m_vector.add(iKey, val); + m_vector.addElement(val); return; } } @@ -137,7 +137,7 @@ public class LTable extends LValue { // where size = m_vector.size() // if ((iKey >= 0) && (iKey < m_vector.size())) { - return (LValue) m_vector.get(iKey); + return (LValue) m_vector.elementAt(iKey); } /* @@ -235,7 +235,7 @@ public class LTable extends LValue { vm.setResult(); if ((i >= 0) && (i < t.m_vector.size())) { vm.push(new LInteger(i+1)); - vm.push((LValue) t.m_vector.get(i)); + vm.push((LValue) t.m_vector.elementAt(i)); ++i; } else if ( e.hasMoreElements() ) { LValue key = (LValue) e.nextElement(); diff --git a/src/test/res/compile.sh b/src/test/res/compile.sh index 2b7027ff..436f0cf8 100644 --- a/src/test/res/compile.sh +++ b/src/test/res/compile.sh @@ -1,10 +1,9 @@ #!/bin/bash -LUA_HOME=/cygdrive/c/programs/lua5.1 -TESTS="test1 test2 test3 test4 test5 swingapp" -TESTS="test2" +TESTS=`echo *.lua` +TESTS="test3.lua" for x in $TESTS do echo compiling $x - ${LUA_HOME}/luac5.1.exe -l -o ${x}.luac ${x}.lua - ${LUA_HOME}/lua5.1.exe ${x}.luac + luac -l -o ${x}c ${x} + lua ${x}c done diff --git a/src/test/res/test3.lua b/src/test/res/test3.lua index e4c6f4c9..bb748136 100644 --- a/src/test/res/test3.lua +++ b/src/test/res/test3.lua @@ -39,7 +39,6 @@ print( func(11, 12, 13) ) print( func(23, 22, 21) ) print( func(func(32,33,34), func(45,46,47), func(58,59,50)) ) ---[[ function p(a,...) print("a",a) print("...",...) @@ -50,4 +49,3 @@ p() p("q") p("q","r") p("q","r","s") ---]] \ No newline at end of file diff --git a/src/test/res/test3.luac b/src/test/res/test3.luac index f6e5050c89cfaff660cb1a8cbe2f1529c7aa9d0b..669b1f1f2f37dcb8d710d66c493c5abf41e3c143 100644 GIT binary patch delta 481 zcmZvYu};J=5Jbmz5}Ip(77!931cU&`2Ve?{lkO){AVhR?rOKOSn;b!$%YRxUIyhb@{~U{ac@b_u%;Tj zg@950?LO^hVgXDL!+jg7HauWZe`N3Jlm$2>CrXUV))}73%u54rKA5Njuorc=-$ZSE z>)BYN20qtaohC{7nIz+DQr+G?wuhHU5;{duU>f(B+fS7+g17uq