# HG changeset patch # User Sonam Gupta # Date 1349774636 25200 # Node ID 7dd8255e425edf57e1db29ed06e18df0a69e5694 # Parent 49c5130fdb4252d2ddc4276b3d026fa6aebc446f 7201968 Cannot convert some PDF files to postscript format diff -r 49c5130fdb42 -r 7dd8255e425e components/ghostscript/patches/7201968.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/ghostscript/patches/7201968.patch Tue Oct 09 02:23:56 2012 -0700 @@ -0,0 +1,82 @@ +This is a known bug with ghostscript-9.00 +http://bugs.ghostscript.com/show_bug.cgi?id=691619 +====================================================================== +--- ghostscript-9.00/base/gximag3x.c Tue Aug 10 09:20:19 2010 ++++ ghostscript-9.00/base/gximag3x.c Mon Oct 8 03:56:41 2012 +@@ -546,6 +546,12 @@ + return_error(gs_error_VMerror); + gx_device_bbox_init(bbdev, dev, mem); + gx_device_bbox_fwd_open_close(bbdev, false); ++ ++ if (dev->device_icc_profile) { ++ bbdev->device_icc_profile = dev->device_icc_profile; ++ rc_increment(bbdev->device_icc_profile); ++ } ++ + code = dev_proc(bbdev, begin_typed_image) + ((gx_device *)bbdev, pis, pmat, pic, prect, pdcolor, pcpath, mem, + pinfo); +@@ -854,6 +860,11 @@ + gx_device *pcdev = penum->pcdev; + int pcode = gx_image_end(penum->pixel.info, draw_last); + ++ if (pcdev->device_icc_profile) { ++ rc_decrement(pcdev->device_icc_profile, "gx_image3x_end_image"); ++ pcdev->device_icc_profile = NULL; ++ } ++ + gs_closedevice(pcdev); + if (mdev0) + gs_closedevice(mdev0); +--- ghostscript-9.00/base/gslib.c Tue May 4 11:47:12 2010 ++++ ghostscript-9.00/base/gslib.c Mon Oct 8 03:57:33 2012 +@@ -178,6 +178,11 @@ + ht.spot_function = odsf; + gs_setscreen(pgs, &ht); + } ++ ++ code = gsicc_init_device_profile(pgs, dev); ++ if (code < 0) ++ return code; ++ + /* gsave and grestore (among other places) assume that */ + /* there are at least 2 gstates on the graphics stack. */ + /* Ensure that now. */ +@@ -197,6 +202,11 @@ + dprintf1("**** Test returned code = %d.\n", code); + dputs("Done. Press to exit."); + fgetc(mem->gs_lib_ctx->fstdin); ++ if (dev->device_icc_profile) { ++ rc_decrement(dev->device_icc_profile, "gslib main"); ++ dev->device_icc_profile = NULL; ++ } ++ + gs_lib_finit(0, 0, mem); + return 0; + #undef mem +--- ghostscript-9.00/base/gdevvec.c Thu Dec 3 16:33:04 2009 ++++ ghostscript-9.00/base/gdevvec.c Mon Oct 8 03:34:56 2012 +@@ -326,6 +326,11 @@ + dev_proc(vdev, get_initial_matrix)); + (*dev_proc(vdev->bbox_device, open_device)) + ((gx_device *) vdev->bbox_device); ++ ++ if (vdev->device_icc_profile) { ++ vdev->bbox_device->device_icc_profile = vdev->device_icc_profile; ++ rc_increment(vdev->bbox_device->device_icc_profile); ++ } + } + return 0; + } +@@ -802,6 +807,11 @@ + FILE *f = vdev->file; + int err; + ++ if (vdev->bbox_device && vdev->bbox_device->device_icc_profile) { ++ rc_decrement(vdev->bbox_device->device_icc_profile, "gdev_vector_close_file"); ++ vdev->bbox_device->device_icc_profile = NULL; ++ } ++ + gs_free_object(vdev->v_memory, vdev->bbox_device, + "vector_close(bbox_device)"); + vdev->bbox_device = 0;