<Sound Dev> [10] Review Request: 8191384 WaveFloatFileReader never closes the data stream
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Fri Nov 17 08:11:39 UTC 2017
Hello, Audio Guru.
Please review the fix for jdk10.
Bug: https://bugs.openjdk.java.net/browse/JDK-8191384
Webrev can be found at: http://cr.openjdk.java.net/~serb/8191384/webrev
The bug occurs in the next code in WaveFloatFileReader.java:
final RIFFReader riffiterator = new RIFFReader(stream);
while (riffiterator.hasNextChunk()) {
RIFFReader chunk = riffiterator.nextChunk();
if (chunk.getFormat().equals("data")) {
return new AudioInputStream(chunk, af, length);
}
}
In the code below we create a RIFFReader for the file stream, then
iterates over the chunks to find a data chunk and create an
AudioInputStream.
The problem is that the chunk has noop close() method, so if the user
will try to close AudioInputStream, the close() method of the file
stream will not be called.
In the fix the close() method for the chunk was changed and now it
always close the stream on top of which it was created.
I also checked that this RIFFReader.close() method was never called in
our code(except the tests), its probably a reason why the NPE when it is
called twice was not found.
--
Best regards, Sergey.
More information about the sound-dev
mailing list