On Wed, 11 Jun 2025 12:37:25 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 
wrote:

> Something like this
> 
> ```
> ImageIcon icon = new ImageIcon();
>                 Image image = 
> Toolkit.getDefaultToolkit().createImage("onepixel.gif");
>                 icon.setImage(image);
> if (icon.getImageLoadStatus == MediaTracker.ABORTED) {
>    ImageIcon newIcon = new ImageIcon();
> }
> ```
> 
> in this case wont mediaTrackerId starts from 0 again for "newIcon"?

No, it won't. Why will it?

`mediaTrackerId` is a static field, that is its value grows with each image 
loaded by a new instance of `ImageIcon`, and the value of `mediaTrackerId` is 
never reset. That's exactly the problem described in the 
[JDK-8055461](https://bugs.openjdk.org/browse/JDK-8055461) bug report.

https://github.com/openjdk/jdk/blob/bf7d40d0486b7b4e4820bb5d08a63c446ea3291d/src/java.desktop/share/classes/javax/swing/ImageIcon.java#L129

https://github.com/openjdk/jdk/blob/bf7d40d0486b7b4e4820bb5d08a63c446ea3291d/src/java.desktop/share/classes/javax/swing/ImageIcon.java#L322-L326

With the change that you propose, it will be impossible to load images with 
`ImageIcon` once the value of `mediaTrackerId` reaches `Integer.MAX_VALUE`.

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

PR Comment: https://git.openjdk.org/jdk/pull/25666#issuecomment-2962554490

Reply via email to