From cd9e51ccfff7f7ce1f52b4c4601d72f34e2fdac6 Mon Sep 17 00:00:00 2001 From: VolodymyrBg Date: Tue, 10 Feb 2026 13:32:42 +0200 Subject: [PATCH] perf: short-circuit Slice equality on length mismatch --- contracts/utils/Memory.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/utils/Memory.sol b/contracts/utils/Memory.sol index bd21666b1d5..fd53a58de5d 100644 --- a/contracts/utils/Memory.sol +++ b/contracts/utils/Memory.sol @@ -114,10 +114,11 @@ library Memory { /// @dev Returns true if the two slices contain the same data. function equal(Slice a, Slice b) internal pure returns (bool result) { - Memory.Pointer ptrA = _pointer(a); - Memory.Pointer ptrB = _pointer(b); uint256 lenA = length(a); uint256 lenB = length(b); + if (lenA != lenB) return false; + Memory.Pointer ptrA = _pointer(a); + Memory.Pointer ptrB = _pointer(b); assembly ("memory-safe") { result := eq(keccak256(ptrA, lenA), keccak256(ptrB, lenB)) }