mojira.dev
MC-312521

"div" integer number provider returns -2147483648 for -2147483648 / -1 instead of an error

This also happens in 26.3.

Steps to Reproduce:

  1. Run: /compute default integer {type:"div",left:-2147483648,right:-1}

  2. Run: /compute default integer {type:"floor_div",left:-2147483648,right:-1}

Observed Results:
Step 1 says: Number provider returned value -2147483648
Step 2 says: Number provider returned invalid value (integer overflow)

Expected Results:
Both return an invalid value. The correct answer, 2147483648, does not fit in an int, and div returns a number with
the wrong sign.

Code analysis:
Quotient#getIntUnsafe uses plain "/", which silently overflows for Integer.MIN_VALUE / -1. FloorQuotient uses
Math.floorDivExact. Using Math.divideExact in Quotient would make them consistent.

Comments 0

No comments.

SamuelTheCheesee

(Unassigned)

Confirmed

26.4 Snapshot 3

Retrieved