-
Bug
-
Resolution: Fixed
-
P4
-
21, 22
-
b03
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8355550 | 21.0.8 | Satyen Subramaniam | P4 | Resolved | Fixed | b01 |
Currently the code in SequenceInputStream.transferTo() contains
if (transferred < Long.MAX_VALUE) {
try {
transferred = Math.addExact(transferred, in.transferTo(out));
} catch (ArithmeticException ignore) {
return Long.MAX_VALUE;
}
}
whereas it should contain the equivalent of what is in InputStream.transferTo
if (transferred < Long.MAX_VALUE) {
try {
transferred = Math.addExact(transferred, read);
} catch (ArithmeticException ignore) {
transferred = Long.MAX_VALUE;
}
}
if (transferred < Long.MAX_VALUE) {
try {
transferred = Math.addExact(transferred, in.transferTo(out));
} catch (ArithmeticException ignore) {
return Long.MAX_VALUE;
}
}
whereas it should contain the equivalent of what is in InputStream.transferTo
if (transferred < Long.MAX_VALUE) {
try {
transferred = Math.addExact(transferred, read);
} catch (ArithmeticException ignore) {
transferred = Long.MAX_VALUE;
}
}
- backported by
-
JDK-8355550 SequenceInputStream.transferTo should not return as soon as Long.MAX_VALUE bytes have been transferred
-
- Resolved
-
- caused by
-
JDK-8297632 InputStream.transferTo() method should specify what the return value should be when the number of bytes transfered is larger than Long.MAX_VALUE
-
- Resolved
-
- links to
-
Commit openjdk/jdk/2d609557
-
Commit(master) openjdk/jdk21u-dev/1c48816d
-
Review openjdk/jdk/17119
-
Review(master) openjdk/jdk21u-dev/1693
(2 links to)