Appease the static analyzer

Since the static analyzer assumes that
`head == blockToRemove && blockToRemove->prevBlock == nullptr` may be
true, it complains that we're deleting `head` and returning `head`
shortly afterward.

Assert (without assertions, since -DNDEBUG is passed) that this isn't
the case.

Bug: 27101951
Test: mma. Warning is gone.
Change-Id: I33e98eec7b293fcf0d8826f89c287a3b870758f2
This commit is contained in:
George Burgess IV
2017-07-18 16:28:28 -07:00
parent 1ad8903bb6
commit fa4eaa63ca

View File

@@ -91,6 +91,9 @@ CacheBlock* CacheBlock::removeBlock(CacheBlock* head, CacheBlock* blockToRemove)
CacheBlock* prevBlock = blockToRemove->mPrev;
if (prevBlock) {
// If this doesn't hold, we have a use-after-free below.
LOG_ALWAYS_FATAL_IF(head == blockToRemove,
"removeBlock: head should not have a previous block");
prevBlock->mNext = nextBlock;
} else {
newHead = nextBlock;