diff --git a/src/blockstatus.h b/src/blockstatus.h --- a/src/blockstatus.h +++ b/src/blockstatus.h @@ -105,6 +105,13 @@ } bool isOnParkedChain() const { return status & PARKED_MASK; } + BlockStatus withClearedParkedFlags() const { + return BlockStatus(status & ~PARKED_MASK); + } + + BlockStatus withReconsideredFlags() const { + return withClearedFailureFlags().withClearedParkedFlags(); + } ADD_SERIALIZE_METHODS; diff --git a/src/test/blockstatus_tests.cpp b/src/test/blockstatus_tests.cpp --- a/src/test/blockstatus_tests.cpp +++ b/src/test/blockstatus_tests.cpp @@ -42,9 +42,13 @@ CheckBlockStatus(s, validity, hasData, hasUndo, hasFailed, hasFailedParent, isParked, hasParkedParent); - // Clears failure flags. + // Clear various flags. CheckBlockStatus(s.withClearedFailureFlags(), validity, hasData, hasUndo, false, false, isParked, hasParkedParent); + CheckBlockStatus(s.withClearedParkedFlags(), validity, hasData, hasUndo, + hasFailed, hasFailedParent, false, false); + CheckBlockStatus(s.withReconsideredFlags(), validity, hasData, hasUndo, + false, false, false, false); // Also check all possible alterations. CheckBlockStatus(s.withData(true), validity, true, hasUndo, hasFailed,