utils_structs_Checkpoints.sol.patch 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. --- utils/structs/Checkpoints.sol 2023-08-21 16:07:18.151395512 +0200
  2. +++ utils/structs/Checkpoints.sol 2023-08-25 10:51:17.586593500 +0200
  3. @@ -199,11 +199,12 @@
  4. function _unsafeAccess(
  5. Checkpoint224[] storage self,
  6. uint256 pos
  7. - ) private pure returns (Checkpoint224 storage result) {
  8. - assembly {
  9. - mstore(0, self.slot)
  10. - result.slot := add(keccak256(0, 0x20), pos)
  11. - }
  12. + ) private view returns (Checkpoint224 storage result) {
  13. + return self[pos]; // explicit (safe) for formal verification hooking
  14. + // assembly {
  15. + // mstore(0, self.slot)
  16. + // result.slot := add(keccak256(0, 0x20), pos)
  17. + // }
  18. }
  19. struct Trace160 {
  20. @@ -386,10 +387,11 @@
  21. function _unsafeAccess(
  22. Checkpoint160[] storage self,
  23. uint256 pos
  24. - ) private pure returns (Checkpoint160 storage result) {
  25. - assembly {
  26. - mstore(0, self.slot)
  27. - result.slot := add(keccak256(0, 0x20), pos)
  28. - }
  29. + ) private view returns (Checkpoint160 storage result) {
  30. + return self[pos]; // explicit (safe) for formal verification hooking
  31. + // assembly {
  32. + // mstore(0, self.slot)
  33. + // result.slot := add(keccak256(0, 0x20), pos)
  34. + // }
  35. }
  36. }