Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > 142cd2305a7d485f4be9c568e90be48b > files > 11

ghostscript-8.71-16.fc13.src.rpm

diff -up ghostscript-8.71/cups/gdevcups.c.cups-realloc-color-depth ghostscript-8.71/cups/gdevcups.c
--- ghostscript-8.71/cups/gdevcups.c.cups-realloc-color-depth	2010-03-15 14:38:08.155372454 +0000
+++ ghostscript-8.71/cups/gdevcups.c	2010-03-15 14:38:12.208372310 +0000
@@ -975,7 +975,8 @@ cups_map_cmyk(gx_device *pdev,		/* I - D
 	      frac      k,		/* I - Black value */
 	      frac      *out)		/* O - Device colors */
 {
-  int	c0, c1, c2, c3;			/* Temporary color values */
+  int	c0 = 0, c1 = 0,
+        c2 = 0, c3 = 0;			/* Temporary color values */
   float	rr, rg, rb,			/* Real RGB colors */
 	ciex, ciey, ciez,		/* CIE XYZ colors */
 	ciey_yn,			/* Normalized luminance */
@@ -2703,9 +2704,13 @@ cups_put_params(gx_device     *pdev,	/* 
   int			color_set;	/* Were the color attrs set? */
   gdev_prn_space_params	sp;		/* Space parameter data */
   int			width,		/* New width of page */
-                        height;		/* New height of page */
+                        height,		/* New height of page */
+                        colorspace,     /* New color space */
+                        bitspercolor;   /* New bits per color */
   static int            width_old = 0,  /* Previous width */
-                        height_old = 0; /* Previous height */
+                        height_old = 0, /* Previous height */
+                        colorspace_old = 0,/* Previous color space */
+                        bitspercolor_old = 0;/* Previous bits per color */
   ppd_attr_t            *backside = NULL,
                         *backsiderequiresflippedmargins = NULL;
   float                 swap;
@@ -2800,9 +2805,10 @@ cups_put_params(gx_device     *pdev,	/* 
   else if (code == 0) \
   { \
     dprintf1("DEBUG: Setting %s to", sname); \
-    for (i = 0; i < count; i ++) \
-      dprintf1(" %d", (unsigned)(arrayval.data[i]));	 \
-      cups->header.name[i] = (unsigned)arrayval.data[i]; \
+    for (i = 0; i < count; i ++) { \
+      dprintf1(" %d", (unsigned)(arrayval.data[i])); \
+      cups->header.name[i] = (unsigned)(arrayval.data[i]); \
+    } \
     dprintf("...\n"); \
   }
 
@@ -3243,23 +3249,31 @@ cups_put_params(gx_device     *pdev,	/* 
     }
 #endif /* CUPS_RASTER_SYNCv1 */
 
+    colorspace = cups->header.cupsColorSpace;
+    bitspercolor = cups->header.cupsBitsPerColor;
+
    /*
     * Don't reallocate memory unless the device has been opened...
     * Also reallocate only if the size has actually changed...
     */
 
-    if (pdev->is_open && (width != width_old || height != height_old))
+    if (pdev->is_open &&
+	(width != width_old || height != height_old ||
+	 colorspace != colorspace_old || bitspercolor != bitspercolor_old))
     {
 
       width_old = width;
       height_old = height;
+      colorspace_old = colorspace;
+      bitspercolor_old = bitspercolor;
 
      /*
       * Device is open and size has changed, so reallocate...
       */
 
-      dprintf4("DEBUG2: Reallocating memory, [%.0f %.0f] = %dx%d pixels...\n",
-	       pdev->MediaSize[0], pdev->MediaSize[1], width, height);
+      dprintf6("DEBUG2: Reallocating memory, [%.0f %.0f] = %dx%d pixels, color space: %d, bits per color: %d...\n",
+	       pdev->MediaSize[0], pdev->MediaSize[1], width, height,
+	       colorspace, bitspercolor);
 
       sp = ((gx_device_printer *)pdev)->space_params;