From 8636a6d557772e6d566d59151b5ba559993faf0b Mon Sep 17 00:00:00 2001 From: Jan Holesovsky Date: Wed, 6 Feb 2013 22:31:43 +0100 Subject: Dense B+ tree: Remove root / one level if possible. Change-Id: Icf76e6c711f43daa021baae47cb54cc2e4e5b0d4 --- sw/inc/densebplustree.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sw/inc/densebplustree.cxx b/sw/inc/densebplustree.cxx index a4469c2ddd11..b0b034c9eedf 100644 --- a/sw/inc/densebplustree.cxx +++ b/sw/inc/densebplustree.cxx @@ -308,6 +308,15 @@ void DenseBPlusTree< Key, Value, Order >::Remove( Key nPos, Key nNumber ) } m_nCount -= nNumber; + + // remove one level, if needed + if ( m_pRoot->m_nUsed == 1 ) + { + DBPTreeNode< Key, Value, Order > *pToDelete = m_pRoot; + m_pRoot = m_pRoot->m_pChildren[0]; + delete pToDelete; + --m_nDepth; + } } template < class Key, class Value, int Order > -- cgit v1.2.3