Merge bitcoin/bitcoin#23762: wallet: Replace Assume with Assert where needed in coinselection

fa26c55644 wallet: Replace Assume with Assert where needed in coinselection (MarcoFalke)

Pull request description:

  `Assume` should only be used when a failed check is recoverable. The checks here don't recover and would run into UB, so use `Assert` instead.

ACKs for top commit:
  theStack:
    Code-review ACK fa26c55644

Tree-SHA512: 0cf9435f9ec44794022ce0274cba602aec95102ab73f4c8a93dae54ef4c0a594f6a81640477039719ddfb6f23b05f8ece3e4886ef7f8a725efff45685ac49d92
This commit is contained in:
fanquake 2021-12-14 09:27:18 +08:00
commit ab879d9885
No known key found for this signature in database
GPG Key ID: 2EEB9F5CC09526C1

View File

@ -390,8 +390,7 @@ void SelectionResult::ComputeAndSetWaste(CAmount change_cost)
CAmount SelectionResult::GetWaste() const
{
Assume(m_waste != std::nullopt);
return *m_waste;
return *Assert(m_waste);
}
CAmount SelectionResult::GetSelectedValue() const
@ -425,8 +424,8 @@ std::vector<CInputCoin> SelectionResult::GetShuffledInputVector() const
bool SelectionResult::operator<(SelectionResult other) const
{
Assume(m_waste != std::nullopt);
Assume(other.m_waste != std::nullopt);
Assert(m_waste.has_value());
Assert(other.m_waste.has_value());
// As this operator is only used in std::min_element, we want the result that has more inputs when waste are equal.
return *m_waste < *other.m_waste || (*m_waste == *other.m_waste && m_selected_inputs.size() > other.m_selected_inputs.size());
}