From 1eb82eca85ade90d86167ed2b74b41e2fb9bc620 Mon Sep 17 00:00:00 2001 From: Nick Barry Date: Wed, 26 Mar 2025 11:00:40 +0000 Subject: [PATCH] `ERC2771Context` gas improvements (#5590) Co-authored-by: Hadrien Croubois --- contracts/metatx/ERC2771Context.sol | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/contracts/metatx/ERC2771Context.sol b/contracts/metatx/ERC2771Context.sol index 794bfb3e5..95a798348 100644 --- a/contracts/metatx/ERC2771Context.sol +++ b/contracts/metatx/ERC2771Context.sol @@ -55,8 +55,10 @@ abstract contract ERC2771Context is Context { function _msgSender() internal view virtual override returns (address) { uint256 calldataLength = msg.data.length; uint256 contextSuffixLength = _contextSuffixLength(); - if (isTrustedForwarder(msg.sender) && calldataLength >= contextSuffixLength) { - return address(bytes20(msg.data[calldataLength - contextSuffixLength:])); + if (calldataLength >= contextSuffixLength && isTrustedForwarder(msg.sender)) { + unchecked { + return address(bytes20(msg.data[calldataLength - contextSuffixLength:])); + } } else { return super._msgSender(); } @@ -70,8 +72,10 @@ abstract contract ERC2771Context is Context { function _msgData() internal view virtual override returns (bytes calldata) { uint256 calldataLength = msg.data.length; uint256 contextSuffixLength = _contextSuffixLength(); - if (isTrustedForwarder(msg.sender) && calldataLength >= contextSuffixLength) { - return msg.data[:calldataLength - contextSuffixLength]; + if (calldataLength >= contextSuffixLength && isTrustedForwarder(msg.sender)) { + unchecked { + return msg.data[:calldataLength - contextSuffixLength]; + } } else { return super._msgData(); }