RFR: 8273369: Computing micros between two instants unexpectedly overflows for some cases
Roger Riggs
rriggs at openjdk.java.net
Tue Sep 7 18:49:42 UTC 2021
On Tue, 7 Sep 2021 18:18:49 GMT, Naoto Sato <naoto at openjdk.org> wrote:
> Please review the fix to the issue. Avoiding overflow by not calling nanosUntil() directly, which will overflow beyond Long.MAX_VALUE difference in nano unit.
Marked as reviewed by rriggs (Reviewer).
src/java.base/share/classes/java/time/Instant.java line 1170:
> 1168: long secsDiff = Math.subtractExact(end.seconds, seconds);
> 1169: long totalMicros = Math.multiplyExact(secsDiff, NANOS_PER_SECOND / 1000);
> 1170: return Math.addExact(totalMicros, (end.nanos - nanos) / 1000);
Can you define NANOS_PER_MICRO, the others conversions use predefined constants.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5396
More information about the core-libs-dev
mailing list