fix a bug when deleting node and CHILDREN_PER_NODE is even
git-svn-id: https://svn.musicpd.org/mpd/trunk@4508 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
@@ -433,7 +433,7 @@ _DeleteAt(TreeIterator * iter)
|
|||||||
node->data[--node->dataCount] = NULL;
|
node->data[--node->dataCount] = NULL;
|
||||||
|
|
||||||
// merge the nodes from the bottom up which have too few data
|
// merge the nodes from the bottom up which have too few data
|
||||||
while (node->dataCount < (CHILDREN_PER_NODE/2))
|
while (node->dataCount < (DATA_PER_NODE/2))
|
||||||
{
|
{
|
||||||
// if we're not the root
|
// if we're not the root
|
||||||
if (node->parent)
|
if (node->parent)
|
||||||
@@ -443,7 +443,7 @@ _DeleteAt(TreeIterator * iter)
|
|||||||
|
|
||||||
// check siblings for extra data
|
// check siblings for extra data
|
||||||
if (pos < node->parent->dataCount &&
|
if (pos < node->parent->dataCount &&
|
||||||
(*(child+1))->dataCount > (CHILDREN_PER_NODE/2))
|
(*(child+1))->dataCount > (DATA_PER_NODE/2))
|
||||||
{
|
{
|
||||||
child++;
|
child++;
|
||||||
node->data[node->dataCount++] =
|
node->data[node->dataCount++] =
|
||||||
@@ -470,7 +470,7 @@ _DeleteAt(TreeIterator * iter)
|
|||||||
(*child)->dataCount--;
|
(*child)->dataCount--;
|
||||||
}
|
}
|
||||||
else if (pos > 0 &&
|
else if (pos > 0 &&
|
||||||
(*(child-1))->dataCount>(CHILDREN_PER_NODE/2))
|
(*(child-1))->dataCount>(DATA_PER_NODE/2))
|
||||||
{
|
{
|
||||||
child--;
|
child--;
|
||||||
int i = node->dataCount++;
|
int i = node->dataCount++;
|
||||||
|
Reference in New Issue
Block a user