@@ -209,15 +209,16 @@ contract ApprovalVotingModule is VotingModule {
209
209
for (uint256 i; i < succeededOptionsLength; ++ i) {
210
210
bool budgetExceeded = false ;
211
211
option = sortedOptions[i];
212
+ uint256 optionTotalValue = 0 ;
212
213
213
214
for (n = 0 ; n < option.targets.length ;) {
214
- // If `budgetToken` is ETH and value is not zero, add transaction value to `totalValue `
215
+ // If `budgetToken` is ETH and value is not zero, add transaction value to `optionTotalValue `
215
216
if (settings.budgetToken == address (0 ) && option.values[n] != 0 ) {
216
- if (totalValue + option.values[n] > settings.budgetAmount) {
217
+ if (totalValue + optionTotalValue + option.values[n] > settings.budgetAmount) {
217
218
budgetExceeded = true ;
218
219
break ; // break inner loop
219
220
}
220
- totalValue += option.values[n];
221
+ optionTotalValue += option.values[n];
221
222
}
222
223
223
224
unchecked {
@@ -234,11 +235,13 @@ contract ApprovalVotingModule is VotingModule {
234
235
// Check if budgetAmount is exceeded for non-ETH tokens
235
236
if (settings.budgetToken != address (0 ) && settings.budgetAmount != 0 ) {
236
237
if (option.budgetTokensSpent != 0 ) {
237
- if (totalValue + option.budgetTokensSpent > settings.budgetAmount) continue ; // break outer loop for non-ETH tokens
238
- totalValue += option.budgetTokensSpent;
238
+ if (totalValue + optionTotalValue + option.budgetTokensSpent > settings.budgetAmount) continue ; // break outer loop for non-ETH tokens
239
+ optionTotalValue += option.budgetTokensSpent;
239
240
}
240
241
}
241
242
243
+ // Add option-specific value to the total value
244
+ totalValue += optionTotalValue;
242
245
unchecked {
243
246
executeParamsLength += n;
244
247
}
0 commit comments