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;
 | 
			
		||||
 | 
			
		||||
	// 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 (node->parent)
 | 
			
		||||
@@ -443,7 +443,7 @@ _DeleteAt(TreeIterator * iter)
 | 
			
		||||
 | 
			
		||||
			// check siblings for extra data
 | 
			
		||||
			if (pos < node->parent->dataCount &&
 | 
			
		||||
			    (*(child+1))->dataCount > (CHILDREN_PER_NODE/2))
 | 
			
		||||
			    (*(child+1))->dataCount > (DATA_PER_NODE/2))
 | 
			
		||||
			{
 | 
			
		||||
				child++;
 | 
			
		||||
				node->data[node->dataCount++] = 
 | 
			
		||||
@@ -470,7 +470,7 @@ _DeleteAt(TreeIterator * iter)
 | 
			
		||||
				(*child)->dataCount--;
 | 
			
		||||
			}
 | 
			
		||||
			else if (pos > 0 &&
 | 
			
		||||
				 (*(child-1))->dataCount>(CHILDREN_PER_NODE/2))
 | 
			
		||||
				 (*(child-1))->dataCount>(DATA_PER_NODE/2))
 | 
			
		||||
			{
 | 
			
		||||
				child--;
 | 
			
		||||
				int i = node->dataCount++;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user