src/solaris/native/sun/awt/CUPSfuncs.c

Print this page

        

@@ -347,11 +347,12 @@
     option = j2d_ppdFindOption(ppd, "PageSize");
     if (option != NULL && option->num_choices > 0) {
         // create array of dimensions - (num_choices * 6)
         //to cover length & height
         DPRINTF( "CUPSfuncs::option->num_choices %d\n", option->num_choices)
-        sizeArray = (*env)->NewFloatArray(env, option->num_choices*6);
+        // +1 is for storing the default media index
+        sizeArray = (*env)->NewFloatArray(env, option->num_choices*6+1);
         if (sizeArray == NULL) {
             unlink(filename);
             j2d_ppdClose(ppd);
             DPRINTF("CUPSfuncs::bad alloc new float array\n", "")
             (*env)->ExceptionClear(env);

@@ -367,10 +368,14 @@
             JNU_ThrowOutOfMemoryError(env, "Could not create printer name");
             return NULL;
         }
         for (i = 0; i<option->num_choices; i++) {
             choice = (option->choices)+i;
+            // get the index of the default page
+            if (!strcmp(choice->choice, option->defchoice)) {
+                dims[option->num_choices*6] = (float)i;
+            }
             size = j2d_ppdPageSize(ppd, choice->choice);
             if (size != NULL) {
                 // paper width and height
                 dims[i*6] = size->width;
                 dims[(i*6)+1] = size->length;