Author: elecharny
Date: Mon Jun 18 13:02:06 2012
New Revision: 1351328
URL: http://svn.apache.org/viewvc?rev=1351328&view=rev
Log:
Fixed various OutOfBoundExceptions
Modified:
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java
Modified:
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java
URL:
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java?rev=1351328&r1=1351327&r2=1351328&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java
(original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java
Mon Jun 18 13:02:06 2012
@@ -235,7 +235,7 @@ public class Leaf<K, V> extends Abstract
// And copy the remaining elements
System.arraycopy( keys, pos, leftLeaf.keys, pos + 1, middle - pos
);
- System.arraycopy( values, pos, leftLeaf.values, pos + 1, middle
-pos );
+ System.arraycopy( values, pos, leftLeaf.values, pos + 1, middle -
pos );
// Now, create the right page
rightLeaf = new Leaf<K, V>( btree, revision, middle );
@@ -247,26 +247,28 @@ public class Leaf<K, V> extends Abstract
else
{
// Create the left page
- leftLeaf = new Leaf<K, V>( btree, revision, middle + 1 );
+ leftLeaf = new Leaf<K, V>( btree, revision, middle );
// Copy all the element into the left page
System.arraycopy( keys, 0, leftLeaf.keys, 0, middle );
System.arraycopy( values, 0, leftLeaf.values, 0, middle );
// Now, create the right page
- rightLeaf = new Leaf<K, V>( btree, revision, middle );
+ rightLeaf = new Leaf<K, V>( btree, revision, middle + 1 );
+
+ int rightPos = pos - middle;
// Copy the keys and the values up to the insertion position
- System.arraycopy( keys, middle, rightLeaf.keys, 0, pos );
- System.arraycopy( values, middle, rightLeaf.values, 0, pos );
+ System.arraycopy( keys, middle, rightLeaf.keys, 0, rightPos );
+ System.arraycopy( values, middle, rightLeaf.values, 0, rightPos );
// Add the new element
- rightLeaf.keys[pos] = key;
- rightLeaf.values[pos] = value;
+ rightLeaf.keys[rightPos] = key;
+ rightLeaf.values[rightPos] = value;
// And copy the remaining elements
- System.arraycopy( keys, pos, rightLeaf.keys, pos + 1, nbElems -
pos );
- System.arraycopy( values, pos, rightLeaf.values, pos + 1, nbElems
-pos );
+ System.arraycopy( keys, pos, rightLeaf.keys, rightPos + 1, nbElems
- pos );
+ System.arraycopy( values, pos, rightLeaf.values, rightPos + 1,
nbElems -pos );
}
// and update the prev/next references
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]