Fix bug 3565008 so that short substrings are backed by short arrays.
This commit is contained in:
@@ -821,6 +821,7 @@ and LuaForge:
|
|||||||
|
|
||||||
<tr valign="top"><td> <b>3.0-alpha3</b></td><td><ul>
|
<tr valign="top"><td> <b>3.0-alpha3</b></td><td><ul>
|
||||||
<li>Fix bug 3597515 memory leak due to string caching by simplifying caching logic.</li>
|
<li>Fix bug 3597515 memory leak due to string caching by simplifying caching logic.</li>
|
||||||
|
<li>Fix bug 3565008 so that short substrings are backed by short arrays.</li>
|
||||||
|
|
||||||
</ul></td></tr>
|
</ul></td></tr>
|
||||||
</table></td></tr></table>
|
</table></td></tr></table>
|
||||||
|
|||||||
@@ -369,7 +369,7 @@ public class LoadState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load lua in either binary or text form from an input stream.
|
* Load lua in either binary or text from an input stream.
|
||||||
* @param firstByte the first byte of the input stream
|
* @param firstByte the first byte of the input stream
|
||||||
* @param stream InputStream to read, after having read the first byte already
|
* @param stream InputStream to read, after having read the first byte already
|
||||||
* @param name Name to apply to the loaded chunk
|
* @param name Name to apply to the loaded chunk
|
||||||
@@ -390,6 +390,19 @@ public class LoadState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load lua in the default mode "bt" from an input stream.
|
||||||
|
* @param firstByte the first byte of the input stream
|
||||||
|
* @param stream InputStream to read, after having read the first byte already
|
||||||
|
* @param name Name to apply to the loaded chunk
|
||||||
|
* @return {@link Prototype} that was loaded
|
||||||
|
* @throws IllegalArgumentException if the signature is bac
|
||||||
|
* @throws IOException if an IOException occurs
|
||||||
|
*/
|
||||||
|
public static LuaFunction load( InputStream stream, String name, LuaValue env ) throws IOException {
|
||||||
|
return load(stream, name, "bt", env);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load lua thought to be a binary chunk from its first byte from an input stream.
|
* Load lua thought to be a binary chunk from its first byte from an input stream.
|
||||||
* @param firstByte the first byte of the input stream
|
* @param firstByte the first byte of the input stream
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ import java.io.ByteArrayInputStream;
|
|||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.lang.ref.WeakReference;
|
|
||||||
import java.util.Hashtable;
|
|
||||||
|
|
||||||
import org.luaj.vm2.lib.MathLib;
|
import org.luaj.vm2.lib.MathLib;
|
||||||
import org.luaj.vm2.lib.StringLib;
|
import org.luaj.vm2.lib.StringLib;
|
||||||
@@ -131,7 +129,7 @@ public class LuaString extends LuaValue {
|
|||||||
// Short result relative to the source. Copy only the bytes that are actually to be used.
|
// Short result relative to the source. Copy only the bytes that are actually to be used.
|
||||||
final byte[] b = new byte[len];
|
final byte[] b = new byte[len];
|
||||||
System.arraycopy(bytes, off, b, 0, len);
|
System.arraycopy(bytes, off, b, 0, len);
|
||||||
return valueOf(bytes);
|
return valueOf(b, 0, len); // To possibly use cached version.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,7 +255,7 @@ public class LuaString extends LuaValue {
|
|||||||
byte[] b = new byte[lhs.m_length+this.m_length];
|
byte[] b = new byte[lhs.m_length+this.m_length];
|
||||||
System.arraycopy(lhs.m_bytes, lhs.m_offset, b, 0, lhs.m_length);
|
System.arraycopy(lhs.m_bytes, lhs.m_offset, b, 0, lhs.m_length);
|
||||||
System.arraycopy(this.m_bytes, this.m_offset, b, lhs.m_length, this.m_length);
|
System.arraycopy(this.m_bytes, this.m_offset, b, lhs.m_length, this.m_length);
|
||||||
return new LuaString(b, 0, b.length);
|
return valueOf(b, 0, b.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
// string comparison
|
// string comparison
|
||||||
@@ -370,7 +368,7 @@ public class LuaString extends LuaValue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public LuaString substring( int beginIndex, int endIndex ) {
|
public LuaString substring( int beginIndex, int endIndex ) {
|
||||||
return new LuaString( m_bytes, m_offset + beginIndex, endIndex - beginIndex );
|
return valueOf( m_bytes, m_offset + beginIndex, endIndex - beginIndex );
|
||||||
}
|
}
|
||||||
|
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
|
|||||||
Reference in New Issue
Block a user