RFR: 8370637: [Windows] Crash if use Graphics after PrintJob.end [v2]
Alexander Zvegintsev
azvegint at openjdk.org
Mon Nov 3 05:39:05 UTC 2025
On Thu, 30 Oct 2025 21:17:50 GMT, Phil Race <prr at openjdk.org> wrote:
>> Synchronize WPrinterJob calls which use the printDC to avoid crash in case of mis-use.
>> The printerDC is released when the job ends.
>> It is zero-ed out in the handle in which it is stored
>> The calls which expect it to be valid now all check for zero and return if it is zero.
>> The calls are made synchronized as is the call to endDoc which zeroes it, so that they cannot have it zeroed out whilst using it.
>>
>> The tests are the same as in the fix for JDK-8370141 which is also under review.
>> Which ever is 2nd to be pushed will have to merge in the changes from the first
>
> Phil Race has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains four commits:
>
> - 8370637
> - 8370637
> - Merge
> - 8370637
Marked as reviewed by azvegint (Reviewer).
src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java line 956:
> 954: }
> 955:
> 956: protected synchronized void beginPath() {
Perhaps this is a topic for a different PR, but the `protected` keyword is redundant here, as well as in many other places in the class, because the `WPrinterJob` is a final class.
src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp line 1589:
> 1587: if ((HDC)dc != NULL) {
> 1588: DeletePrintDC((HDC)dc);
> 1589: }
Suggestion:
if ((HDC)dc != NULL) {
DeletePrintDC((HDC)dc);
}
The closing brace is misaligned here and in all other cases.
src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp line 1871:
> 1869: TRY;
> 1870:
> 1871: if ((HDC)printDC == NULL) {
There is no need to place this check inside the try-catch block.
src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp line 2249:
> 2247: if ((HDC)printDC == NULL) {
> 2248: return;
> 2249: }
Suggestion:
if ((HDC)printDC == NULL) {
return;
}
There are several cases of similar alignment issues.
-------------
PR Review: https://git.openjdk.org/jdk/pull/27984#pullrequestreview-3409406830
PR Review Comment: https://git.openjdk.org/jdk/pull/27984#discussion_r2485346330
PR Review Comment: https://git.openjdk.org/jdk/pull/27984#discussion_r2485315283
PR Review Comment: https://git.openjdk.org/jdk/pull/27984#discussion_r2485332854
PR Review Comment: https://git.openjdk.org/jdk/pull/27984#discussion_r2485329414
More information about the client-libs-dev
mailing list