crytic / crytic/slither

Invalid detection of potentially used before declaration

Open
#960 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
6.4k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

```
$ slither --version
0.8.0
```

Please consider [the following code](https://github.com/threshold-network/solidity-contracts/blob/913c04debc1b5a733ea402bf5dacd5e85da0db8a/contracts/governance/Checkpoints.sol#L120-L133):
```
if (src != address(0)) {
(uint256 oldWeight, uint256 newWeight) = writeCheckpoint(...);
emit DelegateVotesChanged(src, oldWeight, newWeight);
}

if (dst != address(0)) {
(uint256 oldWeight, uint256 newWeight) = writeCheckpoint(...);
emit DelegateVotesChanged(dst, oldWeight, newWeight);
}
```

```
function writeCheckpoint(...) internal returns (uint256 oldWeight, uint256 newWeight) {
// ...
}
```

Slither says:
> Variable 'Checkpoints.moveVotingPower(address,address,uint256).newWeight (contracts/governance/Checkpoints.sol#120)' in Checkpoints.moveVotingPower(address,address,uint256) (contracts/governance/Checkpoints.sol#113-137) potentially used before declaration: (oldWeight,newWeight) = writeCheckpoint(_checkpoints[dst],add,amount) (contracts/governance/Checkpoints.sol#129-133)
Variable 'Checkpoints.moveVotingPower(address,address,uint256).oldWeight (contracts/governance/Checkpoints.sol#120)' in Checkpoints.moveVotingPower(address,address,uint256) (contracts/governance/Checkpoints.sol#113-137) potentially used before declaration: (oldWeight,newWeight) = writeCheckpoint(_checkpoints[dst],add,amount) (contracts/governance/Checkpoints.sol#129-133)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.