FTK. Fix for bug 211880.

git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@985 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
ahodgkinson
2006-10-12 17:52:19 +00:00
parent e037ef167c
commit 8639be36eb
2 changed files with 118 additions and 26 deletions

View File

@@ -4019,7 +4019,7 @@ RCODE F_BTree::updateParentCounts(
FLMUINT uiCounts;
FLMBYTE * pucCounts;
f_assert( getBlockType( pucChildBlock) == F_BLK_TYPE_BT_NON_LEAF_COUNTS);
f_assert( getBlockType( *ppucParentBlock) == F_BLK_TYPE_BT_NON_LEAF_COUNTS);
uiCounts = countKeys( pucChildBlock);
if( RC_BAD( rc = m_pBlockMgr->prepareForUpdate( ppParentBlock,
@@ -4944,6 +4944,9 @@ RCODE F_BTree::moveEntriesToPrevBlock(
FLMUINT uiCount;
FLMUINT uiOffset;
f_assert( !(*ppPrevBlock));
f_assert( !(*ppucPrevBlock));
// Assume nothing to move.
*pbEntriesWereMoved = FALSE;
@@ -5042,7 +5045,6 @@ RCODE F_BTree::moveEntriesToPrevBlock(
// We will need to return this block.
f_assert( !(*ppPrevBlock));
*ppPrevBlock = pPrevBlock;
*ppucPrevBlock = pucPrevBlock;
@@ -5398,6 +5400,10 @@ RCODE F_BTree::moveEntriesToNextBlock(
pParentStack->pBlock = pParentBlock;
pParentStack->pucBlock = pucParentBlock;
pParentBlock = NULL;
pucParentBlock = NULL;
bCommonParent = TRUE;
}
else
@@ -6112,6 +6118,8 @@ RCODE F_BTree::findEntry(
goto Exit;
}
f_assert( pucBlock);
// We are building the stack inverted to make traversing it a bit easier.
uiLevel = getBlockLevel( pucBlock);
@@ -7512,7 +7520,7 @@ StartOver:
// Can we move entries around at all to make some room?
if( RC_BAD( rc = moveEntriesToPrevBlock( uiEntrySize, &pPrevBlock,
if( RC_BAD( rc = moveEntriesToPrevBlock( uiEntrySize, &pPrevBlock,
&pucPrevBlock, &bEntriesWereMoved)))
{
goto Exit;
@@ -7707,6 +7715,10 @@ StartOver:
goto Exit;
}
pPrevBlock->Release();
pPrevBlock = NULL;
pucPrevBlock = NULL;
// Increment so we point to one past the last entry.
m_pStack->uiCurOffset++;
@@ -12924,6 +12936,17 @@ RCODE FLMAPI FlmAllocBTree(
{
RCODE rc = NE_FLM_OK;
F_BTree * pBTree = NULL;
IF_BlockMgr * pTmpBlockMgr = NULL;
if( !pBlockMgr)
{
if( RC_BAD( rc = FlmAllocBlockMgr( 4096, &pTmpBlockMgr)))
{
goto Exit;
}
pBlockMgr = pTmpBlockMgr;
}
if( (pBTree = f_new F_BTree( pBlockMgr)) == NULL)
{
@@ -12941,5 +12964,10 @@ Exit:
pBTree->Release();
}
if( pTmpBlockMgr)
{
pTmpBlockMgr->Release();
}
return( rc);
}