Browse Source

Refactor access to Checkpoint struct without using memory (#4512)

Vladislav Volosnikov 2 years ago
parent
commit
a5ed318634
1 changed files with 5 additions and 3 deletions
  1. 5 3
      contracts/governance/extensions/GovernorVotesQuorumFraction.sol

+ 5 - 3
contracts/governance/extensions/GovernorVotesQuorumFraction.sol

@@ -49,9 +49,11 @@ abstract contract GovernorVotesQuorumFraction is GovernorVotes {
         uint256 length = _quorumNumeratorHistory._checkpoints.length;
 
         // Optimistic search, check the latest checkpoint
-        Checkpoints.Checkpoint224 memory latest = _quorumNumeratorHistory._checkpoints[length - 1];
-        if (latest._key <= timepoint) {
-            return latest._value;
+        Checkpoints.Checkpoint224 storage latest = _quorumNumeratorHistory._checkpoints[length - 1];
+        uint32 latestKey = latest._key;
+        uint224 latestValue = latest._value;
+        if (latestKey <= timepoint) {
+            return latestValue;
         }
 
         // Otherwise, do the binary search