aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-04-18 12:05:32 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2016-04-18 12:05:32 +0200
commita3310b4d485b1510c240f1db882530590b6fd7c9 (patch)
treead121e15124090ef11d53663ab91938313fe6ea1
parent73fc922ed64333d45f18d8a448f30cfa2ae0281e (diff)
txdb: Fix assert crash in new UTXO set cursor
Remove the mistaken assumption that GetKey returning false signifies an internal database issue. It will return false when the key cannot be deserialized into the (char,uint256) stanza, which indicates that the cursor has reached a different kind of key. Fixes bug #7890 introduced in #7756.
-rw-r--r--src/txdb.cpp6
1 files changed, 1 insertions, 5 deletions
diff --git a/src/txdb.cpp b/src/txdb.cpp
index be86cceeb3..19ca178654 100644
--- a/src/txdb.cpp
+++ b/src/txdb.cpp
@@ -134,12 +134,8 @@ bool CCoinsViewDBCursor::Valid() const
void CCoinsViewDBCursor::Next()
{
pcursor->Next();
- if (pcursor->Valid()) {
- bool ok = pcursor->GetKey(keyTmp);
- assert(ok); // If GetKey fails here something must be wrong with underlying database, we cannot handle that here
- } else {
+ if (!pcursor->Valid() || !pcursor->GetKey(keyTmp))
keyTmp.first = 0; // Invalidate cached key after last record so that Valid() and GetKey() return false
- }
}
bool CBlockTreeDB::WriteBatchSync(const std::vector<std::pair<int, const CBlockFileInfo*> >& fileInfo, int nLastFile, const std::vector<const CBlockIndex*>& blockinfo) {