comm_kernel: fix off-by-one error for numeric value range check

This commit is contained in:
Steve Fan 2022-01-11 10:12:40 +08:00 committed by Sebastien Bourdeauducq
parent 095fb9e333
commit d7dd75e833
1 changed files with 4 additions and 4 deletions

View File

@ -437,12 +437,12 @@ class CommKernel:
self._write_bool(value) self._write_bool(value)
elif tag == "i": elif tag == "i":
check(isinstance(value, (int, numpy.int32)) and check(isinstance(value, (int, numpy.int32)) and
(-2**31 < value < 2**31-1), (-2**31 <= value < 2**31),
lambda: "32-bit int") lambda: "32-bit int")
self._write_int32(value) self._write_int32(value)
elif tag == "I": elif tag == "I":
check(isinstance(value, (int, numpy.int32, numpy.int64)) and check(isinstance(value, (int, numpy.int32, numpy.int64)) and
(-2**63 < value < 2**63-1), (-2**63 <= value < 2**63),
lambda: "64-bit int") lambda: "64-bit int")
self._write_int64(value) self._write_int64(value)
elif tag == "f": elif tag == "f":
@ -451,8 +451,8 @@ class CommKernel:
self._write_float64(value) self._write_float64(value)
elif tag == "F": elif tag == "F":
check(isinstance(value, Fraction) and check(isinstance(value, Fraction) and
(-2**63 < value.numerator < 2**63-1) and (-2**63 <= value.numerator < 2**63) and
(-2**63 < value.denominator < 2**63-1), (-2**63 <= value.denominator < 2**63),
lambda: "64-bit Fraction") lambda: "64-bit Fraction")
self._write_int64(value.numerator) self._write_int64(value.numerator)
self._write_int64(value.denominator) self._write_int64(value.denominator)