diff --git a/contracts/utils/Counters.sol b/contracts/utils/Counters.sol index c4ee7b718..746a2631e 100644 --- a/contracts/utils/Counters.sol +++ b/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; + } } } diff --git a/test/utils/Counters.test.js b/test/utils/Counters.test.js index 5e6424e0e..90a1ae845 100644 --- a/test/utils/Counters.test.js +++ b/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 () {