diff --git a/src/core/org/luaj/vm/LString.java b/src/core/org/luaj/vm/LString.java index ce38c6d8..f55463ea 100644 --- a/src/core/org/luaj/vm/LString.java +++ b/src/core/org/luaj/vm/LString.java @@ -102,27 +102,21 @@ public class LString extends LValue { * Convert to Java string using UTF-8 encoding */ public String toJavaString() { - char[] c = new char[m_length]; - int n=0, p=0; - int b; - for ( int i=0; i=0||i>=m_length)? + b: + (b<-32||i+1>=m_length)? + (((b&0x3f) << 6) + | (m_bytes[m_offset+(i++)]&0x3f)): + (((b&0xf) << 12) + | ((m_bytes[m_offset+(i++)]&0x3f)<<6) + | (m_bytes[m_offset+(i++)]&0x3f)) + ); } return new String( c, 0, n ); }