There is possible NPE, when trying to play AudioClip

import java.applet.AudioClip;
import java.io.IOException;
import java.net.URL;


public class AudioNpe {
    public static void main(String[] args) throws IOException, 
InterruptedException {
        URL url = new 
URL("https://file-examples-com.github.io/uploads/2017/11/file_example_WAV_1MG.wav";);
        AudioClip content = (AudioClip)url.getContent();
        content.play();

        Thread.sleep(10000L);
    }
}


          at java.lang.Thread.<init>(Thread.java:393)
          at java.lang.Thread.<init>(Thread.java:760)
          at 
com.sun.media.sound.JSSecurityManager.createThread(JSSecurityManager.java:115)
          at com.sun.media.sound.DataPusher.start(DataPusher.java:117)
          - locked <0x955> (a com.sun.media.sound.DataPusher)
          at 
com.sun.media.sound.JavaSoundAudioClip.startImpl(JavaSoundAudioClip.java:202)
          - locked <0x95e> (a com.sun.media.sound.JavaSoundAudioClip)
          at 
com.sun.media.sound.JavaSoundAudioClip.play(JavaSoundAudioClip.java:152)
          at main.java.AudioNpe.main(AudioNpe.java:12)


It happens because of bug in 
`com.sun.media.sound.JSSecurityManager#createThread` implementation: variable 
`String name`, which supposed to be used - actually unused and `null` thread 
name is passed to `Thread` constructor.

After fix - audio clip plays without problems.

-------------

Commit messages:
 - [PATCH] Avoid NPE when creating a Thread without name
 - [PATCH] Avoid NPE when creating a Thread without name
 - [PATCH] Avoid NPE when creating a Thread without name

Changes: https://git.openjdk.java.net/jdk/pull/6382/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=6382&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8279673
  Stats: 85 lines in 3 files changed: 82 ins; 1 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6382.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6382/head:pull/6382

PR: https://git.openjdk.java.net/jdk/pull/6382

Reply via email to