[OpenJDK 2D-Dev] [9]: RFR JDK-8058316, , lookupDefaultPrintService returns null on Solaris 11
prasanta sadhukhan
prasanta.sadhukhan at oracle.com
Fri Mar 4 10:47:06 UTC 2016
Hi Phil,
Please find the modified webrev
http://cr.openjdk.java.net/~psadhukhan/8058316/webrev.01/
Regards
Prasanta
On 3/4/2016 3:21 AM, Phil Race wrote:
> I think there is a small memory leak with this code :
> https://www.cups.org/documentation.php/doc-2.0/api-cups.html#cupsGetDests
>
> "Use the cupsFreeDests function to free the destination list"
>
> Also I am not sure if you are using cupsGetDest as intended :-
>
> 202 cups_dest_t *dest = j2d_cupsGetDest(NULL, NULL, num_dests,
> dests);
> 203 if (dest != NULL) {
> 204 for (i = 0; i < num_dests; i++) {
> 205 if (dest[i].is_default) {
> 206 defaultPrinter = dest[i].name;
> 207 break;
> 208 }
> 209 }
> 210 }
>
>
> I don't think you are expected to iterate over the result here.
> I think it is already the pointer to the default. In other words
> the function will already have done what your for loop is doing.
> If there is no default you will iterate off the end ..
>
> -phil.
>
> On 03/03/2016 02:39 AM, prasanta sadhukhan wrote:
>> Hi Phil,
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8058316
>> webrev: http://cr.openjdk.java.net/~psadhukhan/8058316/webrev.00/
>>
>> The issue was on some Solaris 11 hosts lookupDefaultPrintService()
>> returns null while lpstat -d reports an ipp printer.
>> The issue was found to exist in linux too since it uses CUPS.
>>
>> What was happening was that CUPSPrinter.java#getDefaultPrinter()
>> searches for server-defined default destination by connection to CUPS
>> server but
>> if the user sets the default printer using "lpoptions -d
>> <printername>" command, server will not have any knowledge of this
>> settings and this user-set default printer (which is stored in
>> ~/.cups/lpoptions file) was not searched
>> and getDefaultPrinter() returns null since it could not find any
>> server default printer.
>>
>> Fix is to call cupsGetDest API to search for a lpoptions-defined
>> default printer and if not set, then search for server-defined
>> destination.
>>
>> I could not provide a regression testcase for this as it involves
>> setting default printer using lpoptions command.
>>
>> Regards
>> Prasanta
>>
>
More information about the 2d-dev
mailing list