Skip to content

Commit fe58bd6

Browse files
committed
Change # of bits ValueWriter checks for BigDecimal
Move from 32 to 31 because bitLength ignores the sign bit.
1 parent d00d84f commit fe58bd6

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

src/main/java/com/rabbitmq/client/impl/ValueWriter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ else if(value instanceof BigDecimal) {
145145
BigDecimal decimal = (BigDecimal)value;
146146
writeOctet(decimal.scale());
147147
BigInteger unscaled = decimal.unscaledValue();
148-
if(unscaled.bitLength() > 32) /*Integer.SIZE in Java 1.5*/
148+
// We use 31 instead of 32 because bitLength ignores the sign bit,
149+
// so e.g. new BigDecimal(Integer.MAX_VALUE) comes out to 31 bits.
150+
if(unscaled.bitLength() > 31) /*Integer.SIZE in Java 1.5*/
149151
throw new IllegalArgumentException
150152
("BigDecimal too large to be encoded");
151153
writeLong(decimal.unscaledValue().intValue());

0 commit comments

Comments
 (0)