Skip to content

Commit 4f4b88e

Browse files
committed
fix SHR
1 parent c158636 commit 4f4b88e

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

lib/opFns.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,16 +179,18 @@ module.exports = {
179179
if (!runState._common.gteHardfork('constantinople')) {
180180
trap(ERROR.INVALID_OPCODE)
181181
}
182+
const isSigned = b.testn(255)
182183
if (a.gten(256)) {
183184
if (b.fromTwos(256).ltn(0)) {
184-
return new BN(-1).toTwos(256)
185+
return new BN(utils.MAX_INTEGER)
185186
} else {
186187
return new BN(0)
187188
}
188189
}
189190
const c = b.shrn(a.toNumber())
190191
if (b.testn(255)) {
191-
const mask = utils.MAX_INTEGER.shrn(255 - a.toNumber())
192+
const shiftedOutWidth = 255 - a.toNumber()
193+
const mask = utils.MAX_INTEGER.shrn(shiftOutWidth).shln(shiftedOutWidth)
192194
return c.ior(mask)
193195
} else {
194196
return c

0 commit comments

Comments
 (0)