From e687038a2b34cba711f57584cf2e91ac701de228 Mon Sep 17 00:00:00 2001 From: Avory Date: Sun, 16 Nov 2025 23:29:54 +0200 Subject: [PATCH] Update GovernorCountingOverridable.sol --- .../governance/extensions/GovernorCountingOverridable.sol | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/contracts/governance/extensions/GovernorCountingOverridable.sol b/contracts/governance/extensions/GovernorCountingOverridable.sol index 45a72ea780c..077a02f550b 100644 --- a/contracts/governance/extensions/GovernorCountingOverridable.sol +++ b/contracts/governance/extensions/GovernorCountingOverridable.sol @@ -45,6 +45,8 @@ abstract contract GovernorCountingOverridable is GovernorVotes { error GovernorAlreadyOverriddenVote(address account); + error GovernorInsufficientDelegateVotes(uint256 available, uint256 required); + mapping(uint256 proposalId => ProposalVote) private _proposalVotes; /// @inheritdoc IGovernor @@ -153,7 +155,11 @@ abstract contract GovernorCountingOverridable is GovernorVotes { proposalVote.voteReceipt[delegate].overriddenWeight += SafeCast.toUint208(overriddenWeight); } else { uint8 delegateSupport = delegateCasted - 1; - proposalVote.votes[delegateSupport] -= overriddenWeight; + uint256 currentVotes = proposalVote.votes[delegateSupport]; + if (currentVotes < overriddenWeight) { + revert GovernorInsufficientDelegateVotes(currentVotes, overriddenWeight); + } + proposalVote.votes[delegateSupport] = currentVotes - overriddenWeight; emit VoteReduced(delegate, proposalId, delegateSupport, overriddenWeight); }