wallet: Use GetSelectionAmount for target value calculations

For target value calculations, GetSelectionAmount should be used, not
m_effective_value or m_value.

Specifically, ApproximateBestSubset mistakenly uses m_value when
calculating whether the target value has been met. This has been changed
to use GetSelectionAmount.
This commit is contained in:
Andrew Chow committed 2021-08-13 00:34:02 -04:00
1 parent 77e23ca945
commit 2de222c401
1 file changed
+2 -2
+2 -2
View File
@@ -195,7 +195,7 @@ static void ApproximateBestSubset(const std::vector<OutputGroup>& groups, const
//the selection random.
if (nPass == 0 ? insecure_rand.randbool() : !vfIncluded[i])
{
nTotal += groups[i].m_value;
nTotal += groups[i].GetSelectionAmount();
vfIncluded[i] = true;
if (nTotal >= nTargetValue)
{
@@ -205,7 +205,7 @@ static void ApproximateBestSubset(const std::vector<OutputGroup>& groups, const
nBest = nTotal;
vfBest = vfIncluded;
}
nTotal -= groups[i].m_value;
nTotal -= groups[i].GetSelectionAmount();
vfIncluded[i] = false;
}
}