RFR: 8055461: getNextID in ImageIcon class can lead to overflow
Alexey Ivanov
aivanov at openjdk.org
Tue Jun 10 13:14:31 UTC 2025
On Fri, 6 Jun 2025 03:29:47 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:
> ImageIcon.getNextID uses `mediaTrackerID ` which do not detect overflow.
>
> Theoretically there is a possibility that there can be overflow in the long time run or for large number of created "imageIcon"
>
> Made sure there is no overflow and treat that loadImage as ABORTED
>
> No regression testcase as it addresses theoretical possibility..
I think a better solution is to create a new `MediaTracker`, and start anew with id of zero.
The `TRACKER_KEY` is used only by `ImageIcon`, so it shouldn't break any apps.
src/java.desktop/share/classes/javax/swing/ImageIcon.java line 304:
> 302: height = image.getHeight(imageObserver);
> 303: return;
> 304: }
This means that the application won't be able to load images using `MediaTracker`.
Is it really a problem that the id becomes negative? Does anything stop working?
~~I can't see that anything breaks because of that. The id is just an id, and it's compared for equality. (Although having a negative id could look suspicious.)~~
It may break at `MediaEntry` insertion, although it would still work probably…
Another problem may occur if and when the id wraps around again to positive numbers and 0, 1… _are still being used_.
-------------
Changes requested by aivanov (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/25666#pullrequestreview-2913496159
PR Review Comment: https://git.openjdk.org/jdk/pull/25666#discussion_r2137855023
More information about the client-libs-dev
mailing list