From efe668970ef71a46ffa599a2a1c0c47c7778f803 Mon Sep 17 00:00:00 2001 From: Voronor <129545215+voronor@users.noreply.github.com> Date: Thu, 20 Mar 2025 20:00:58 +0100 Subject: [PATCH] fix: fix bitwise shift precedence in `ANIMAL_MASK` and related logic --- contracts/src/levels/MagicAnimalCarousel.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/src/levels/MagicAnimalCarousel.sol b/contracts/src/levels/MagicAnimalCarousel.sol index 8c082ab6e..be5c813da 100644 --- a/contracts/src/levels/MagicAnimalCarousel.sol +++ b/contracts/src/levels/MagicAnimalCarousel.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.28; contract MagicAnimalCarousel { uint16 constant public MAX_CAPACITY = type(uint16).max; - uint256 constant ANIMAL_MASK = uint256(type(uint80).max) << 160 + 16; + uint256 constant ANIMAL_MASK = uint256(type(uint80).max) << (160 + 16); uint256 constant NEXT_ID_MASK = uint256(type(uint16).max) << 160; uint256 constant OWNER_MASK = uint256(type(uint160).max); @@ -21,7 +21,7 @@ contract MagicAnimalCarousel { uint256 nextCrateId = (carousel[currentCrateId] & NEXT_ID_MASK) >> 160; require(encodedAnimal <= uint256(type(uint80).max), AnimalNameTooLong()); - carousel[nextCrateId] = (carousel[nextCrateId] & ~NEXT_ID_MASK) ^ (encodedAnimal << 160 + 16) + carousel[nextCrateId] = (carousel[nextCrateId] & ~NEXT_ID_MASK) ^ (encodedAnimal << (160 + 16)); | ((nextCrateId + 1) % MAX_CAPACITY) << 160 | uint160(msg.sender); currentCrateId = nextCrateId;