فهرست منبع

Add revert string to Counter decrement overflow (#2500)

Hadrien Croubois 4 سال پیش
والد
کامیت
f2112be4d8
2فایلهای تغییر یافته به همراه9 افزوده شده و 3 حذف شده
  1. 8 2
      contracts/utils/Counters.sol
  2. 1 1
      test/utils/Counters.test.js

+ 8 - 2
contracts/utils/Counters.sol

@@ -23,10 +23,16 @@ library Counters {
     }
 
     function increment(Counter storage counter) internal {
-        counter._value += 1;
+        unchecked {
+            counter._value += 1;
+        }
     }
 
     function decrement(Counter storage counter) internal {
-        counter._value = counter._value - 1;
+        uint256 value = counter._value;
+        require(value > 0, "Counter: decrement overflow");
+        unchecked {
+            counter._value = value - 1;
+        }
     }
 }

+ 1 - 1
test/utils/Counters.test.js

@@ -43,7 +43,7 @@ contract('Counters', function (accounts) {
 
       it('reverts if the current value is 0', async function () {
         await this.counter.decrement();
-        await expectRevert.unspecified(this.counter.decrement());
+        await expectRevert(this.counter.decrement(), 'Counter: decrement overflow');
       });
     });
     context('after incremented to 3', function () {