Skip to content

Commit

Permalink
Improve code comments in ERC1967._upgradeToAndCallSecure
Browse files Browse the repository at this point in the history
(cherry picked from commit 2e6ef74)
  • Loading branch information
frangio committed Apr 19, 2021
1 parent df7996b commit a664fb1
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions contracts/proxy/ERC1967/ERC1967Upgrade.sol
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,17 @@ abstract contract ERC1967Upgrade is ERC1967Storage {
*/
function _upgradeToAndCallSecure(address newImplementation, bytes memory data, bool forceCall) internal {
address oldImplementation = _getImplementation();
// do inital upgrade

// Initial upgrade and setup call
_setImplementation(newImplementation);
// do setup call
if (data.length > 0 || forceCall) {
Address.functionDelegateCall(newImplementation, data);
}
// check if nested in an upgrade check

// Perform rollback test if not already in progress
StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);
if (!rollbackTesting.value) {
// trigger upgrade check with flag set to true
// Trigger rollback using upgradeTo from the new implementation
rollbackTesting.value = true;
Address.functionDelegateCall(
newImplementation,
Expand All @@ -80,11 +81,10 @@ abstract contract ERC1967Upgrade is ERC1967Storage {
)
);
rollbackTesting.value = false;
// check upgrade was effective
// Check rollback was effective
require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades");
// reset upgrade
// Finally reset to the new implementation and log the upgrade
_setImplementation(newImplementation);
// emit event
emit Upgraded(newImplementation);
}
}
Expand Down

0 comments on commit a664fb1

Please sign in to comment.