diff --git a/src/core/org/luaj/vm2/LuaString.java b/src/core/org/luaj/vm2/LuaString.java index 5ff8a97e..e28d8202 100644 --- a/src/core/org/luaj/vm2/LuaString.java +++ b/src/core/org/luaj/vm2/LuaString.java @@ -388,7 +388,7 @@ public class LuaString extends LuaValue { public static String decodeAsUtf8(byte[] bytes, int offset, int length) { int i,j,n,b; for ( i=offset,j=offset+length,n=0; i result1, ... diff --git a/src/core/org/luaj/vm2/lib/IoLib.java b/src/core/org/luaj/vm2/lib/IoLib.java index 119f96ab..b6226841 100644 --- a/src/core/org/luaj/vm2/lib/IoLib.java +++ b/src/core/org/luaj/vm2/lib/IoLib.java @@ -444,7 +444,7 @@ public class IoLib extends OneArgFunction { else if ( "*l".equals(format) ) v[i] = freadline(f); else - typerror( i+1, "(invalid format)" ); + argerror( i+1, "(invalid format)" ); } if ( v[i].isnil() ) return i==0? NIL: varargsOf(v,0,i); diff --git a/test/junit/org/luaj/vm2/StringTest.java b/test/junit/org/luaj/vm2/StringTest.java index 4e034f9e..a158679b 100644 --- a/test/junit/org/luaj/vm2/StringTest.java +++ b/test/junit/org/luaj/vm2/StringTest.java @@ -66,6 +66,16 @@ public class StringTest extends TestCase { } return sb.toString(); } + + public void testUtf820482051() throws UnsupportedEncodingException { + int i = 2048; + char[] c = { (char) (i+0), (char) (i+1), (char) (i+2), (char) (i+3) }; + String before = new String(c)+" "+i+"-"+(i+4); + LuaString ls = LuaString.valueOf(before); + String after = ls.tojstring(); + assertEquals( userFriendly( before ), userFriendly( after ) ); + + } public void testUtf8() { for ( int i=4; i<0xffff; i+=4 ) { @@ -101,7 +111,7 @@ public class StringTest extends TestCase { String before = new String(c); LuaString ls = LuaString.valueOf(before); String after = ls.tojstring(); - assertEquals( userFriendly( "abc" ), userFriendly( after ) ); + assertEquals( userFriendly( "abc\0def" ), userFriendly( after ) ); } } diff --git a/test/lua/errors/operators.lua b/test/lua/errors/operators.lua index 9633ef19..5a69b8d4 100644 --- a/test/lua/errors/operators.lua +++ b/test/lua/errors/operators.lua @@ -9,7 +9,7 @@ require 'args' banner('unary -') negative = function(a) return - a end checkallpass('negative',{somenumber}) -checkallerrors('negative',{notanumber},'attempt to perform arithmetic on') +checkallerrors('negative',{notanumber},'attempt to perform arithmetic') -- length banner('#') @@ -21,7 +21,7 @@ checkallerrors('lengthop',{notatable},'attempt to get length of') banner('not') notop = function(a) return not a end checkallpass('notop',{somenumber}) -checkallerrors('notop',{notanumber},'attempt to perform arithmetic on') +checkallpass('notop',{notanumber}) -- function call banner( '()' )