Files
smom-dbis-138/contracts/vendor/openzeppelin/ReentrancyGuardUpgradeable.sol

49 lines
1.4 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
/**
* @dev Compatibility shim for OZ 4.x-style upgradeable reentrancy protection.
*
* The repo still initializes `__ReentrancyGuard_init()` in several UUPS contracts,
* while the installed OZ 5.x upgradeable package no longer ships this module.
* Keeping the old initialization shape here lets both Foundry and Hardhat compile
* against the same upgrade-safe storage layout expectations.
*/
abstract contract ReentrancyGuardUpgradeable is Initializable {
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
function __ReentrancyGuard_init() internal onlyInitializing {
__ReentrancyGuard_init_unchained();
}
function __ReentrancyGuard_init_unchained() internal onlyInitializing {
_status = _NOT_ENTERED;
}
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
_status = _ENTERED;
}
function _nonReentrantAfter() private {
_status = _NOT_ENTERED;
}
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == _ENTERED;
}
uint256[49] private __gap;
}