wallet: add assert to SelectionResult::Merge for safety

This commit is contained in:
S3RK authored and furszy committed 2022-12-02 12:39:15 -03:00
1 parent c4e3b7d6a1
commit 3282fad599
2 files changed
+10

No files matched your search

+4
View File
@@ -452,12 +452,16 @@ void SelectionResult::AddInputs(const std::set<COutput>& inputs, bool subtract_f
void SelectionResult::Merge(const SelectionResult& other)
{
// Obtain the expected selected inputs count after the merge (for now, duplicates are not allowed)
const size_t expected_count = m_selected_inputs.size() + other.m_selected_inputs.size();
m_target += other.m_target;
m_use_effective |= other.m_use_effective;
if (m_algo == SelectionAlgorithm::MANUAL) {
m_algo = other.m_algo;
}
util::insert(m_selected_inputs, other.m_selected_inputs);
assert(m_selected_inputs.size() == expected_count);
}
const std::set<COutput>& SelectionResult::GetInputSet() const
+6
View File
@@ -316,6 +316,12 @@ public:
void ComputeAndSetWaste(const CAmount min_viable_change, const CAmount change_cost, const CAmount change_fee);
[[nodiscard]] CAmount GetWaste() const;
/**
* Combines the @param[in] other selection result into 'this' selection result.
*
* Important note:
* There must be no shared 'COutput' among the two selection results being combined.
*/
void Merge(const SelectionResult& other);
/** Get m_selected_inputs */