On Mon, 23 Feb 2026 21:27:39 GMT, Phil Race <[email protected]> wrote:
>> After [JDK-8373239](https://bugs.openjdk.org/browse/JDK-8373239):, Printing >> ALL pages results in NPE for 1.1 PrintJob because of lack of set pageranges >> citing >> >> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: >> Cannot invoke "javax.print.attribute.standard.PageRanges.getMembers()" >> because "range" is null >> at >> java.desktop/sun.print.PrintJobDelegate.updateAttributes(PrintJobDelegate.java:529) >> at >> java.desktop/sun.print.PrintJobDelegate.printDialog(PrintJobDelegate.java:424) >> at java.desktop/sun.print.PrintJob2D.printDialog(PrintJob2D.java:65) >> at >> java.desktop/sun.awt.windows.WToolkit.getPrintJob(WToolkit.java:644) >> at >> java.desktop/sun.awt.windows.WToolkit.getPrintJob(WToolkit.java:629) >> >> A null check is now added as we are now removing PageRange attribute if not >> set..It works fine for PrinterJob but fails for 1.1 PrintJob as >> PrintJobDelegate.updateAttributes called in 1.1 PrintJob use pageRange >> variable without checking if it exists. > > src/java.desktop/share/classes/sun/print/PrintJobDelegate.java line 529: > >> 527: >> 528: PageRanges range = (PageRanges)attributes.get(PageRanges.class); >> 529: if (range != null) { > > I wonder if this is right ? > Surely if the PageRanges is not there any more, we should update the > JobAttributes to a default range ? > This would leave whatever stale value is present. I looked at the code review #29312 for [JDK-8373239](https://bugs.openjdk.org/browse/JDK-8373239)… and wondered whether that code should rather ensure `PageRanges.class` attribute is present instead of removing it and the range to the default value. https://github.com/openjdk/jdk/blob/6b576235b84f51e273da44158bfcadbb48f51baa/src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java#L1737-L1739 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/29874#discussion_r2843246703
