RFR: 8159055: ImageIcon.setImage and ImageIcon(Image) constructor can't handle null parameter [v12]
Prasanta Sadhukhan
psadhukhan at openjdk.org
Tue Jul 8 06:02:41 UTC 2025
On Mon, 7 Jul 2025 22:43:21 GMT, Phil Race <prr at openjdk.org> wrote:
> I think we need to have the "whole picture" tested to make sure everything does as we expect. It isn't so easy to tell even from looking at the source of ImageIcon. Then spec'ed so developers know what to expect. When I wrote a little test, I see null args do generate NPEs but invalid args don't result in null images Toolkit images are installed, even if they can't be used because the source isn't valid. They are "effectively" null, but not "actually" null. We should at least specify the null arg behaviours and try to say something about invalid image data. And as a result, I am now flipping to just documenting the setImage(null) NPE The protected method loadImage probably needs to say it too. Invalid image data, maybe we can cover that in a class level statement. Note: I'd like to see every constructor tested with both null and invalid image data.
I tested with null image/imagedata and invalid imagedata and it seems only these constructors throw NPE (current JDK) for null image (invalid image doesnt throw any exception)
ImageIcon(image, desc)
ImageIcon(image)
ImageIcon(byte[], desc)
ImageIcon(byte[])
Current PR checks for null in ImageIcon(image) so it will not throw NPE but ImageIcon(byte[]) will still throw..
Should we handle those in separate PR and let this only be for setImage(null)?
-------------
PR Comment: https://git.openjdk.org/jdk/pull/25767#issuecomment-3047479917
More information about the client-libs-dev
mailing list