[OpenJDK 2D-Dev] Request for review: [NEW BUG] Printer spoolers ignore result from spool process

Phil Race philip.race at oracle.com
Thu Oct 20 19:38:41 UTC 2011


PS you may want to look at your indentation. It appears inconsistent.
Always use exactly 4 spaces for indentation.

-phil.

On 10/20/2011 12:20 PM, Phil Race wrote:
> Neil,
>
> You are throwing an IOException and we already have the code to catch
> that and re-throw as the documented printer exception type, and also 
> the event should
> get notified to any listeners.  So far so good.
>
> But you are throwing the IOException before calling spoolFile.delete() 
> so we'll leak
> the spool file.
> Arguably that could happen anyway if there were an Exception but that was
> probably not occurring previously.
>
> I suggest either to move the spoolfile.delete() to *before* the 
> handleError call
> or into a finally { } block.
>
> -phil.
>
>
> On 10/20/2011 11:56 AM, Neil Richards wrote:
>> Hi all,
>> Whilst trying to debug a printing problem, I noticed that the (Unix and
>> PostScript) printer spoolers in Java do not check what the result is of
>> trying to launch the OS print spooler command (often 'lpr' or 'lp').
>>
>> As a result, if that exec'd command fails for any reason, that result
>> (and that reason) is lost, and the user left without any clue that
>> something is amiss.
>>
>> To address this, I've created a suggested fix [1], which checks the exit
>> code for the exec'd command and, if it's bad, throws an exception which
>> captures any text from the command's error stream.
>>
>> It does this in both sun.print.PSPrinterJob and sun.print.UnixPrinterJob
>> (they are very similar in composition and function).
>>
>> Please review this suggested change.
>>
>> Thanks, Neil
>>
>> [1] http://cr.openjdk.java.net/~ngmr/ojdk-201/webrev.01/index.html
>>
>




More information about the 2d-dev mailing list