Looks good to me.
Yours,
Ralf
PS. Interesting to know the actual root cause.
Am 05.04.2019 um 08:22 schrieb Sergey Bylokhov:
Hello, Audio Guru.
Please review the fix for jdk13.
Bug: https://bugs.openjdk.java.net/browse/JDK-8221445
Fix: http://cr.openjdk.java.net/~serb/8221445/webrev.00
We can get unexpected ArrayIndexOutOfBoundsException, when we create the
FastSysexMessage in this place:
http://hg.openjdk.java.net/jdk/jdk/file/532e88de77eb/src/java.desktop/share/classes/com/sun/media/sound/AbstractMidiDevice.java#l684
Th root cause of the failure is the empty "data", which is incorrect sysex message.
According to the specification in this case the InvalidMidiDataException should be
thrown. And the code above which creates the FastSysexMessage is ready for this exception:
} catch (InvalidMidiDataException e) {
// this happens when invalid data comes over the wire. Ignore it.
return;
}
Wrong exception is occurred, because in the FastSysexMessage we do not throw any
exceptions, but instead we call super.setMessage() for the broken data with assumption
that the parent class will throw correct exception. But unfortunately the parent
class(unlike FastSysexMessage) does not have the check for the empty array.
PS: It is also interesting the in some cases we throw IndexOutOfBoundsException which is
not specified in the javadoc, I'll update the spec later.