Improve tests and behavior of string.indexOf operations.

This commit is contained in:
James Roseborough
2013-01-27 18:42:21 +00:00
parent 1f89f30239
commit cef619cb40
2 changed files with 134 additions and 9 deletions

View File

@@ -501,8 +501,8 @@ public class LuaString extends LuaValue {
* @return index of first match found, or -1 if not found.
*/
public int indexOf( byte b, int start ) {
for ( int i=0, j=m_offset+start; i < m_length; ++i ) {
if ( m_bytes[j++] == b )
for ( int i=start; i < m_length; ++i ) {
if ( m_bytes[m_offset+i] == b )
return i;
}
return -1;
@@ -517,10 +517,9 @@ public class LuaString extends LuaValue {
public int indexOf( LuaString s, int start ) {
final int slen = s.length();
final int limit = m_length - slen;
for ( int i = start; i <= limit; ++i ) {
if ( equals( m_bytes, m_offset + i, s.m_bytes, s.m_offset, slen ) ) {
for ( int i=start; i <= limit; ++i ) {
if ( equals( m_bytes, m_offset+i, s.m_bytes, s.m_offset, slen ) )
return i;
}
}
return -1;
}
@@ -532,11 +531,10 @@ public class LuaString extends LuaValue {
*/
public int lastIndexOf( LuaString s ) {
final int slen = s.length();
final int limit = m_offset + m_length - slen;
for ( int i = limit; i >= m_offset; --i ) {
if ( equals( m_bytes, i, s.m_bytes, s.m_offset, slen ) ) {
final int limit = m_length - slen;
for ( int i=limit; i >= 0; --i ) {
if ( equals( m_bytes, m_offset+i, s.m_bytes, s.m_offset, slen ) )
return i;
}
}
return -1;
}