diff --git a/contracts/mocks/ReentrancyMock.sol b/contracts/mocks/ReentrancyMock.sol index 130a8fd90..5725afaf2 100644 --- a/contracts/mocks/ReentrancyMock.sol +++ b/contracts/mocks/ReentrancyMock.sol @@ -1,14 +1,16 @@ pragma solidity ^0.4.24; +import "../Initializable.sol"; import "../utils/ReentrancyGuard.sol"; import "./ReentrancyAttack.sol"; -contract ReentrancyMock is ReentrancyGuard { +contract ReentrancyMock is Initializable, ReentrancyGuard { uint256 public counter; constructor() public { + ReentrancyGuard.initialize(); counter = 0; } diff --git a/contracts/utils/ReentrancyGuard.sol b/contracts/utils/ReentrancyGuard.sol index 7f232cce5..c12cbccca 100644 --- a/contracts/utils/ReentrancyGuard.sol +++ b/contracts/utils/ReentrancyGuard.sol @@ -1,5 +1,6 @@ pragma solidity ^0.4.24; +import "../Initializable.sol"; /** * @title Helps contracts guard against reentrancy attacks. @@ -7,10 +8,14 @@ pragma solidity ^0.4.24; * @dev If you mark a function `nonReentrant`, you should also * mark it `external`. */ -contract ReentrancyGuard { +contract ReentrancyGuard is Initializable { /// @dev counter to allow mutex lock with only one SSTORE operation - uint256 private _guardCounter = 1; + uint256 private _guardCounter; + + function initialize() public initializer { + _guardCounter = 1; + } /** * @dev Prevents a contract from calling itself, directly or indirectly.