449594 Handle ArrayTrie overflow with false return
This commit is contained in:
parent
04fc803b0e
commit
63d6754ea1
|
@ -99,6 +99,7 @@ public class ArrayTrie<V> extends AbstractTrie<V>
|
||||||
this(128);
|
this(128);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public ArrayTrie(int capacityInNodes)
|
public ArrayTrie(int capacityInNodes)
|
||||||
{
|
{
|
||||||
super(true);
|
super(true);
|
||||||
|
@ -151,8 +152,14 @@ public class ArrayTrie<V> extends AbstractTrie<V>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (t>=_key.length)
|
||||||
|
{
|
||||||
|
_rows=(char)_key.length;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
_key[t]=v==null?null:s;
|
_key[t]=v==null?null:s;
|
||||||
V old=(V)_value[t];
|
|
||||||
_value[t] = v;
|
_value[t] = v;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -440,6 +447,6 @@ public class ArrayTrie<V> extends AbstractTrie<V>
|
||||||
@Override
|
@Override
|
||||||
public boolean isFull()
|
public boolean isFull()
|
||||||
{
|
{
|
||||||
return _rows+1==_key.length;
|
return _rows+1>=_key.length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,24 @@ public class TrieTest
|
||||||
trie.put("",9);
|
trie.put("",9);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOverflow() throws Exception
|
||||||
|
{
|
||||||
|
int i=0;
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
if (++i>10000)
|
||||||
|
break; // must not be fixed size
|
||||||
|
if (!trie.put("prefix" + i, i))
|
||||||
|
{
|
||||||
|
Assert.assertTrue(trie.isFull());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.assertTrue(!trie.isFull() || !trie.put("overflow", 0));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testKeySet() throws Exception
|
public void testKeySet() throws Exception
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue