49 lines
1.4 KiB
Solidity
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;
|
|
}
|