Hi Phil,

On 11/13/2015 12:23 AM, Philip Race wrote:
I am 99% sure this breaks the API on Windows on Mac.
Did you test what it does there ?

It works on Windows as PrinterJob.pageDialog(attributes) calls pageDialog(PageFormat page) in WPrinterJob.java which overrides pageDialog(PageFormat) of RasterPrinterJob It also works on Mac as PrinterJob.pageDialog(attributes) calls pageDialog(PageFormat page) in CPrinterJob.java which overrides pageDialog(PageFormat) of RasterPrinterJob

I actually mistakenly mentioned down below that the check was added in pageDialog(attributes) whereas actually the temporary removal and addition was added in pageDialog(PageFormat) so it only affects linux printing dialog.
Test has wild card imports again ..
Corrected wild card imports. Updated webrev is here:
http://cr.openjdk.java.net/~psadhukhan/8039412/webrev.01/


Also please add evaluation and explanation of the proposed fix into a
public comment on the bug report before submitting for review.

Added public comment.

Regards
Prasanta
-phil.

On 11/6/15, 3:00 AM, prasanta sadhukhan wrote:
Hi All,

Please review a fix for jdk9.

Bug: https://bugs.openjdk.java.net/browse/JDK-8039412
webrev: http://cr.openjdk.java.net/~psadhukhan/8039412/webrev.00/

Issue was seen in linux whereby if we call PrinterJob.pageDialog() after PrinterJob.printDialog() it results in StackOverflowError if DialogSelectionType is NATIVE.

This was because pageDialog(attributes) was calling pageDialog(pageformat) if it is DialogTypeSelection.NATIVE which again calls pageDialog(attributes)
via this code
http://hg.openjdk.java.net/jdk9/client/jdk/file/298d3fe64572/src/java.desktop/share/classes/sun/print/RasterPrinterJob.java#l767
and
http://hg.openjdk.java.net/jdk9/client/jdk/file/298d3fe64572/src/java.desktop/share/classes/sun/print/RasterPrinterJob.java#l743

I added a fix whereby in pageDialog(attributes)we check if it is DialogTypeSelection.NATIVE and remove this attribute temporarily before calling pageDialog(pageformat)
and restore the DialogTypeSelection.NATIVE after the call.
It is similar to solution done in
http://hg.openjdk.java.net/jdk9/client/jdk/file/298d3fe64572/src/java.desktop/share/classes/sun/print/PSPrinterJob.java#l443

Regards
Prasanta

Reply via email to