12345678910111213141516171819202122232425262728293031323334 |
- pragma solidity ^0.4.8;
- /**
- * @title Helps contracts guard agains rentrancy attacks.
- * @author Remco Bloemen <remco@2π.com>
- * @notice If you mark a function `nonReentrant`, you should also
- * mark it `external`.
- */
- contract ReentrancyGuard {
- /**
- * @dev We use a single lock for the whole contract.
- */
- bool private rentrancy_lock = false;
- /**
- * @dev Prevents a contract from calling itself, directly or indirectly.
- * @notice If you mark a function `nonReentrant`, you should also
- * mark it `external`. Calling one nonReentrant function from
- * another is not supported. Instead, you can implement a
- * `private` function doing the actual work, and a `external`
- * wrapper marked as `nonReentrant`.
- */
- modifier nonReentrant() {
- if(rentrancy_lock == false) {
- rentrancy_lock = true;
- _;
- rentrancy_lock = false;
- } else {
- throw;
- }
- }
- }
|