lib/bindata/bits.rb in bindata-2.4.9 vs lib/bindata/bits.rb in bindata-2.4.10

- old
+ new

@@ -113,17 +113,17 @@ if nbits == 1 && signed == :signed raise "signed bitfield must have more than one bit" end if signed == :signed - max = (1 << (nbits - 1)) - 1 - min = -(max + 1) + max = "max = (1 << (#{nbits} - 1)) - 1" + min = "min = -(max + 1)" else - min = 0 - max = (1 << nbits) - 1 + min = "min = 0" + max = "max = (1 << #{nbits}) - 1" end - clamp = "(val < #{min}) ? #{min} : (val > #{max}) ? #{max} : val" + clamp = "(#{max}; #{min}; val = (val < min) ? min : (val > max) ? max : val)" if nbits == 1 # allow single bits to be used as booleans clamp = "(val == true) ? 1 : (not val) ? 0 : #{clamp}" end