diff options
author | chriseth <chris@ethereum.org> | 2017-03-09 19:39:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-09 19:39:25 +0800 |
commit | b22369d59007f0e68374c861fb7551cf6fbfaa99 (patch) | |
tree | 322fac62562f6b332f50db1f58220d41eb7f00d8 /docs/solidity-by-example.rst | |
parent | e364909e063cf95922b9611b3d25fb0a4199e43f (diff) | |
parent | b5c17d70580c050c8ed1d4bf5bb8cefbae443bc4 (diff) | |
download | dexon-solidity-b22369d59007f0e68374c861fb7551cf6fbfaa99.tar.gz dexon-solidity-b22369d59007f0e68374c861fb7551cf6fbfaa99.tar.zst dexon-solidity-b22369d59007f0e68374c861fb7551cf6fbfaa99.zip |
Merge pull request #1763 from nemofisch/develop
Fix delegation loop in Ballot example contract
Diffstat (limited to 'docs/solidity-by-example.rst')
-rw-r--r-- | docs/solidity-by-example.rst | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/docs/solidity-by-example.rst b/docs/solidity-by-example.rst index 915cfa76..7e08c6b4 100644 --- a/docs/solidity-by-example.rst +++ b/docs/solidity-by-example.rst @@ -106,6 +106,10 @@ of votes. if (sender.voted) throw; + // Self-delegation is not allowed. + if (to == msg.sender) + throw; + // Forward the delegation as long as // `to` also delegated. // In general, such loops are very dangerous, @@ -114,16 +118,12 @@ of votes. // In this case, the delegation will not be executed, // but in other situations, such loops might // cause a contract to get "stuck" completely. - while ( - voters[to].delegate != address(0) && - voters[to].delegate != msg.sender - ) { + while (voters[to].delegate != address(0)) { to = voters[to].delegate; - } - // We found a loop in the delegation, not allowed. - if (to == msg.sender) { - throw; + // We found a loop in the delegation, not allowed. + if (to == msg.sender) + throw; } // Since `sender` is a reference, this |