diff options
author | Chris Liddell <chris.liddell@artifex.com> | 2019-08-15 15:54:04 +0100 |
---|---|---|
committer | Chris Liddell <chris.liddell@artifex.com> | 2019-09-05 09:17:44 +0100 |
commit | f560f3c468ac187eca8cd55ee46a46e2924e0924 (patch) | |
tree | 94969a9e5928384128a7305c21a82b2ffce51198 | |
parent | cc86598152465c85dfca5ba265608931672f730f (diff) | |
download | ghostpdl-f560f3c468ac187eca8cd55ee46a46e2924e0924.tar.gz |
Doc updates, changelog, news etcghostpdl-9.28rc2
Update to note explicitly case sensitivity on Windsows
In News.htm and History9.htm
-rw-r--r-- | doc/History9.htm | 6633 | ||||
-rw-r--r-- | doc/News.htm | 52 | ||||
-rw-r--r-- | doc/Use.htm | 1 |
3 files changed, 6638 insertions, 48 deletions
diff --git a/doc/History9.htm b/doc/History9.htm index 703a69caf..a1c275db4 100644 --- a/doc/History9.htm +++ b/doc/History9.htm @@ -79,6 +79,7 @@ TOC to see how to edit it for visual conciseness. <h2>Table of contents</h2> <blockquote><ul> +<li><a href="#Version9.28">Version 9.28 (2019-09-05)</a> <li><a href="#Version9.27">Version 9.27 (2019-04-03)</a> <li><a href="#Version9.26">Version 9.26 (2018-11-20)</a> <li><a href="#Version9.25">Version 9.25 (2018-09-13)</a> @@ -132,35 +133,24 @@ overview</a>. <!-- [1.0 end visible header] ============================================== --> <!-- [2.0 begin contents] ================================================== --> -<h2><a name="Version9.27"></a>Version 9.27 (2019-04-03)</h2> -<p><strong>IMPORTANT:</strong> It is our intention, within the next 12 months (ideally sooner, -in time for the next release) to make SAFER the default mode of operation. For many users -this will have no effect, since they use SAFER explicitly, but some niche uses which rely -on SAFER being disabled may need to start explicitly adding the "-dNOSAFER" option. +<h2><a name="Version9.28"></a>Version 9.28 (2019-09-05)</h2> <p> Highlights in this release include: <ul> <li> -<p>We have extensively cleaned up the Postscript name space: removing access to internal -and/or undocumented Postscript operators, procedures and data. This has benefits for security -and maintainability. -</li> -<li> -<p>We have added a new "product": "gpdl". This is a rethink/redesign of the old -"language_switch" product (pspcl6), and includes all the interpreters we -develop based on the Ghostscript graphics library: Postscript, PDF, PCL6, PXL and XPS. -This is experimental, and should be considered of beta testing quality, and thus is not -built by default: it can be built by using the "experimental" target. -<p><code>gpdl</code> uses a heuristic to judge the file type being passed to it. In general, -it supports most of the widely used command line options for each interpreter, but -compatibility is not complete (the practicalities of swapping interpreters means it is -unlikely that full parity of command line options will be possible). -</li> -<li> -<p>Fontmap can now reference invidual fonts in a TrueType Collection for font subsitution. -Previously, a Fontmap entry could only reference a TrueType collection and use the default -(first) font. Now, the Fontmap syntax allows for specifying a specific index in a TTC. -See the comments at the top of (the default) Fontmap.GS for details. +<p>The file access control capability (enable with <code>-dSAFER</code>) has been +completely rewritten, with a ground-up rethink of the design. For more details, +see: <a href="Use.htm#Safer">SAFER</a>. +<p>It is important to note that <code>-dSAFER</code> now <strong>only</strong> enables +the file access controls, and no longer applies restrictions to standard Postscript +functionality (specifically, restrictions on <code>setpagedevice</code>. If your +application relies on these Postscript restrictions, see <a href="Use.htm#OldSafer">OLDSAFER</a>, +and please get in touch, as we do plan to remove those Postscript restrictions +unless we have reason not to. +<p><strong>IMPORTANT:</strong> File access controls are now enabled by default. In +order to run Ghostscript without these controls, see <a href="Use.htm#NoSafer">NOSAFER</a> </li> +<p><strong>Important Note for Windows Users</strong>: See below under +<a href="#28_Incompatible_changes">Incompatible Changes</a> <li> <p>IMPORTANT: We are in the process of forking LittleCMS. LCMS2 is not thread safe, and cannot be made thread safe without breaking the ABI. Our fork will be thread safe, and include @@ -174,9 +164,24 @@ Our fork will be available as its own package separately from Ghostscript (and M </ul> <p>For a list of open issues, or to report problems, please visit <a href="http://bugs.ghostscript.com/">bugs.ghostscript.com</a>. -<h3><a name="9.27_Incompatible_changes"></a>Incompatible changes</h3> +<h3><a name="9.28_Incompatible_changes"></a>Incompatible changes</h3> <ul> <li> +<p>There are a couple of subtle incompatibilities between the old and new SAFER +implementations. Firstly, as mentioned above, SAFER now leaves standard Postcript +functionality unchanged (except for the file access limitations). Secondly, +the interaction with <code>save</code>/<code>restore</code> operations, see +<a href="Use.htm#Safer">SAFER</a>. +<p><strong>Important Note for Windows Users</strong>: +<br> +The file/path pattern matching is case sensitive, even on Windows. This is a +change in behaviour compared to the old code which, on Windows, was case +<i>in</i>sensitive. This is in recognition of changes in Windows behaviour, +in that it now supports (although does not enforce) case sensitivity. +</li> +<li> +<p>The following is not strictly speaking new to 9.28, as not much has changed since +9.27 in this area, but for those who don't upgrade with every release: <p>The process of "tidying" the Postscript name space should have removed only non-standard and undocumented operators. Nevertheless, it is possible that any integrations or utilities that rely on those non-standard and undocumented @@ -190,6 +195,6582 @@ still work as previously for Postscript files. For PDF files, users are encourag at <a href="https://www.mupdf.com">MuPDF</a>. </li> </ul> +<h3><a name="9.28_changelog"></a>Changelog</h3> +<p><strong>2019-08-15 15:54:04 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e62f684be3d80bb5599a669ddca3ee1b544100d8">e62f684be3d80bb5599a669ddca3ee1b544100d8</a> +<blockquote> +<p> + Doc updates, changelog, news etc<br> +<br> + Update to note explicitly case sensitivity on Windsows<br> +<br> + In News.htm and History9.htm<br> +<br> +doc/History9.htm<br> +doc/News.htm<br> +doc/Use.htm<br> +<p> +</blockquote> +<hr> +<p><strong>2019-09-05 09:09:38 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cc86598152465c85dfca5ba265608931672f730f">cc86598152465c85dfca5ba265608931672f730f</a> +<blockquote> +<p> + Date for 9.28 rc2<br> +<br> +base/gscdefs.h<br> +base/version.mak<br> +doc/DLL.htm<br> +doc/Deprecated.htm<br> +doc/Develop.htm<br> +doc/Devices.htm<br> +doc/Drivers.htm<br> +doc/Fonts.htm<br> +doc/History9.htm<br> +doc/Install.htm<br> +doc/Internal.htm<br> +doc/Language.htm<br> +doc/Lib.htm<br> +doc/Make.htm<br> +doc/News.htm<br> +doc/Ps-style.htm<br> +doc/Ps2epsi.htm<br> +doc/Psfiles.htm<br> +doc/Readme.htm<br> +doc/Release.htm<br> +doc/SavedPages.htm<br> +doc/Source.htm<br> +doc/Unix-lpr.htm<br> +doc/Use.htm<br> +doc/VectorDevices.htm<br> +doc/WhatIsGS.htm<br> +doc/gs-vms.hlp<br> +doc/sample_downscale_device.htm<br> +doc/subclass.htm<br> +doc/thirdparty.htm<br> +man/dvipdf.1<br> +man/gs.1<br> +man/gslp.1<br> +man/gsnd.1<br> +man/pdf2dsc.1<br> +man/pdf2ps.1<br> +man/pf2afm.1<br> +man/pfbtopfa.1<br> +man/printafm.1<br> +man/ps2ascii.1<br> +man/ps2epsi.1<br> +man/ps2pdf.1<br> +man/ps2pdfwr.1<br> +man/ps2ps.1<br> +<p> +</blockquote> +<hr> +<p><strong>2018-10-31 20:22:11 +0100 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=350a5cd8b7bddee3fa914c914dd40a685fed54e7">350a5cd8b7bddee3fa914c914dd40a685fed54e7</a> +<blockquote> +<p> + Bug 700088: Report error if all wanted J2K components are not decoded.<br> +<br> + Ghostscript used to attempt to use even the undecoded components.<br> + The source code for upstream's opj_decompress tool avoided this by<br> + a workaround along with a comment indicating that this ought to be<br> + done in the library (so all clients, e.g. Ghostscript will benefit<br> + from it). With this commit the library will error out if not all<br> + requested components are successfully decoded. Thus Ghostscript<br> + will no longer crash.<br> +<br> + Reported in https://github.com/uclouvain/openjpeg/issues/1158<br> + sent upstream in https://github.com/uclouvain/openjpeg/pull/1164<br> + and finally committed in e66125fe260deee49fdf6e9978d9bd29871dd5bb<br> +<br> +openjpeg/src/bin/jp2/opj_decompress.c<br> +openjpeg/src/lib/openjp2/j2k.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-09-03 12:34:55 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b944e875baed62e718eee8e7ad2b351cd4f4aa07">b944e875baed62e718eee8e7ad2b351cd4f4aa07</a> +<blockquote> +<p> + Undo commit 95f7befcec1b30fd5014c8ad616485d32901ce33 for release<br> +<br> + Proper handling of the page group color space is going to require<br> + a more complex solution whereby we ensure that we do the final<br> + alpha blending in the page group color space and not the target<br> + device color space.<br> +<br> +base/gstrans.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-09-03 08:52:16 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ebfe16357f3484209e69d6788cc52b20dbdb81a0">ebfe16357f3484209e69d6788cc52b20dbdb81a0</a> +<blockquote> +<p> + Add -sBlendColorProfile into Use.htm<br> +<br> +doc/Use.htm<br> +<p> +</blockquote> +<hr> +<p><strong>2019-09-03 18:15:56 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=bbdfaa56b00f2ba556476f0265e65e4ad370f641">bbdfaa56b00f2ba556476f0265e65e4ad370f641</a> +<blockquote> +<p> + Avoid potential UMR with arg checking in arg sanitization code.<br> +<br> +base/gslibctx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-09-02 17:16:45 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=00d4696ea2de6c48a57d5a4ce0c3bbfd99201e3a">00d4696ea2de6c48a57d5a4ce0c3bbfd99201e3a</a> +<blockquote> +<p> + Proper fix for deep color overprint.<br> +<br> + The previous fix confused memset and memcpy. Properly write the<br> + (native endian) 16 bit color values into the big endian buffer.<br> +<br> +base/gsovrc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-09-02 12:59:33 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c6d448b3fe616fdc2ba1e52766c9a4417e4e738f">c6d448b3fe616fdc2ba1e52766c9a4417e4e738f</a> +<blockquote> +<p> + Fix deep color mattes.<br> +<br> + As seen with the content vanishing when rendering<br> + tests_private/pdf/sumatra/uninitialized_value_with_JPX_images.pdf<br> + to psdcmyk16. The Softmask on the image has a Matte of [1,1,1]<br> + and the calculations in the current code overflow, meaning that<br> + it comes out as completely white.<br> +<br> + We resort to 64bit to avoid the overflow. Mattes are vanishingly<br> + rare, so speed shouldn't be an issue. We can revisit if we ever<br> + find a case that matters.<br> +<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-31 12:45:47 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4c1f255c2e825ab5e0a3d0f7bfa88538c7cbb912">4c1f255c2e825ab5e0a3d0f7bfa88538c7cbb912</a> +<blockquote> +<p> + Update overprint hl_color code to cope with 16bit devices too.<br> +<br> +base/gsovrc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-31 12:16:40 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=373787ee145e906c8d19d5ccda84b4f267db2010">373787ee145e906c8d19d5ccda84b4f267db2010</a> +<blockquote> +<p> + Fix deep color transparency overprint.<br> +<br> + The component copy loop at the end of the blend could fail to copy<br> + enough entries.<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-30 15:16:34 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=361c4dd1e18ca0675173c0ad0104ffb910e93bb4">361c4dd1e18ca0675173c0ad0104ffb910e93bb4</a> +<blockquote> +<p> + Avoid overflow in deep color luminosity calculations.<br> +<br> + Resort to 64bit as scale calculations are not constrained<br> + to the usual 16bit range.<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-29 10:02:49 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=51d57fafbdc021c8c73475db505156f77e96ce39">51d57fafbdc021c8c73475db505156f77e96ce39</a> +<blockquote> +<p> + Fix clearing of the drag and drop file list<br> +<br> + Because we have to store the list of file names from drag and drop events, in<br> + order to correctly add and remove them from the permit file read list, we also<br> + want to clear the lists before we destroy the "text" window object.<br> +<br> + The problem is, this happens after we shutdown Ghostscript and unload the dll.<br> +<br> + This moves that clearing of the list into function that we call before we<br> + shut down.<br> +<br> +psi/dwmain.c<br> +psi/dwtext.c<br> +psi/dwtext.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-28 10:14:52 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ad0532e379a9eb6eb8a6fc0a6305679b25cd9ecb">ad0532e379a9eb6eb8a6fc0a6305679b25cd9ecb</a> +<blockquote> +<p> + Fix path permissions added from cidfmap.<br> +<br> + From the cidfmap, we accumulate a list of unique directory paths a we process<br> + cidfmap and then add them - when I did that code, I forgot that to allow access<br> + to the directory, we need a trailing directory separator.<br> +<br> + Add that before calling .addcontrolpath<br> +<br> +Resource/Init/gs_cidfm.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-27 16:49:30 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f0fedf1f77a9fe70627355b45fdb809e83df3568">f0fedf1f77a9fe70627355b45fdb809e83df3568</a> +<blockquote> +<p> + Fix font file finding with -P<br> +<br> + In trying to reproduce the issue that inspired commit dea69cd04964, I noticed<br> + that font file searching wasn't working correctly with -P specified on the<br> + command line.<br> +<br> + Previously, it could just end up with us not finding a font we should have, but<br> + with dea69cd04964 it would result in a typecheck error.<br> +<br> + This ensures the stack is always how it should be after the findlibfile<br> + call<br> +<br> +Resource/Init/gs_fonts.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-22 16:10:03 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5c28996d19d5e10cb177e72c47037ec0c7b3e4d5">5c28996d19d5e10cb177e72c47037ec0c7b3e4d5</a> +<blockquote> +<p> + Make it clear: file/path matching is always case sensitive<br> +<br> + even on Windows.<br> +<br> +doc/Use.htm<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-29 19:50:08 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=24532ce9371fd1f69dd343cbd6ac8187a86c5c96">24532ce9371fd1f69dd343cbd6ac8187a86c5c96</a> +<blockquote> +<p> + Fix overflow in 16bit blending calculations.<br> +<br> + The blending code uses the following construction in<br> + several places:<br> +<br> + src_scale = ...; /* a value between 0 and 0x10000 */<br> + tmp = (y-z) * src_scale + 0x8000;<br> + foo = x + (tmp>>16);<br> +<br> + Where x,y,z, are all expected to be in the 0...0xffff range.<br> +<br> + Due to y-z having a sign bit, this can overflow a 32 bit tmp.<br> +<br> + We therefore sacrifice a bit of accuracy in src_scale to get<br> + correctness.<br> +<br> +base/gxblend.c<br> +base/gxblend1.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-28 14:13:27 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ca52028b90a09d056190548c41ae0b9a9fbadb4e">ca52028b90a09d056190548c41ae0b9a9fbadb4e</a> +<blockquote> +<p> + Remove outdated FIXME's.<br> +<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-28 12:50:36 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=bd59dc145252282d8f586c36082e63a0eba95c15">bd59dc145252282d8f586c36082e63a0eba95c15</a> +<blockquote> +<p> + Bug 701446: Avoid divide by zero in shading.<br> +<br> + The previous commit for this bug was enough to solve the problem<br> + for ppmraw, but not, it seems, for other devices. This addresses<br> + the division by zero more directly.<br> +<br> +base/gxshade6.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-27 20:13:02 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9a32a379933f4ba27ff1ad5734ec8c24c42eb513">9a32a379933f4ba27ff1ad5734ec8c24c42eb513</a> +<blockquote> +<p> + Fix deep color transparency saturation blending.<br> +<br> + Problem seen with:<br> +<br> + tests_private/pdf/PDF_1.7_FTS/fts_25_2513.pdf.psdcmyk16.300.1<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-27 17:45:57 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=68af4dbc7ca2d6bfdbe938b840799cb8883c973e">68af4dbc7ca2d6bfdbe938b840799cb8883c973e</a> +<blockquote> +<p> + Bug 701446: Avoid division by zero in gx_shade_trapezoid<br> +<br> + Remove some incorrect clipping code.<br> +<br> +base/gxshade6.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-27 15:54:36 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4be058791ae19131f19a8303364be53619abc280">4be058791ae19131f19a8303364be53619abc280</a> +<blockquote> +<p> + Exit early from gx_shade_trapezoid in more cases.<br> +<br> + A zero height trap isn't plotted, so we can bail out early in<br> + that case.<br> +<br> +base/gxshade6.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-26 17:02:03 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9423e84178071f16b83d18412b22b0b479b1938b">9423e84178071f16b83d18412b22b0b479b1938b</a> +<blockquote> +<p> + Fix deep colour transparency "uncompositing".<br> +<br> + Uncompositing a group uses a scale factor that is greater in range<br> + than we'd like; we need to resort to 64bit to do this to avoid<br> + losing accuracy.<br> +<br> + This solves problems seen in:<br> +<br> + tests_private/comparefiles/Bug689918.pdf.psdcmyk16.300.1<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-27 14:26:41 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=131768114453972469296658b795406b79630538">131768114453972469296658b795406b79630538</a> +<blockquote> +<p> + Handle relative FONTPATH values<br> +<br> + Prior to 9.21 (specifically: 8abd22010eb4db0fb1b10e430d5f5d83e015ef70), relative<br> + paths for FONTPATH worked, but did so due to a logic fault with how we search<br> + for "lib" files.<br> +<br> + When attempting to open file names specified on the command line, we used a<br> + flag set in the command line handling (starting_arg_file) to know whether the<br> + lib file searching logic should try to open the file name directly (as well as<br> + trying the file combined with each path in the search path).<br> +<br> + In versions prior to commit 8abd22010eb4 that flag (starting_arg_file) could<br> + remain set to true, even after the command line file(s) had been opened. This<br> + represented a (minor) security risk. Commit 8abd22010eb4 ensured the flag was<br> + properly (re)set, and that caused relative paths for FONTPATH stopped working.<br> +<br> + Rather than reintroduce the security risk, update the code that checks whether<br> + the font files exist so it explicitly tries the file name directly, rather than<br> + assuming .libfile (or findlibfile, in this case) does that automatically.<br> +<br> + Also remove an extraneous (but benign) dup of the font name.<br> +<br> +Resource/Init/gs_fonts.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-27 15:27:05 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=98310063bdbe8c67bcfe84e2c648cfa286a05738">98310063bdbe8c67bcfe84e2c648cfa286a05738</a> +<blockquote> +<p> + pdfwrite - fix corner case with Color Conversion<br> +<br> + Bug #701456 "Ghostscript creates broken PDF file after color conversion"<br> +<br> + The test file is, essentially weird. The image on page 3 is not a single<br> + image, its a series of images, all of which are in a /Indexed /DeviceRGB<br> + colour space.<br> +<br> + In addition, these images are drawn on *top* of another set of images<br> + (thereby completely obscuring them). These images are also drawn in<br> + /Indexed /DeviceRGB. However, these images are in fact monochrome, the<br> + Indexed space consists of 2 colours. This means that (highly unusually)<br> + we have a DeviceRGB image with 1 Bit Per Component.<br> +<br> + This caused problems for the pdfwrite compression filter chooser because<br> + it chose (and configured) a compression scheme suitable for 1 BPC data<br> + and then actually output 8 BPC data. This led to the compression filter<br> + writing too little data.<br> +<br> + Fix this here by setting the BPC to 8 if we are doing colour conversion,<br> + and have the colour conversion setup code use the original value in the<br> + image enumerator (the conversion code *does* need to know the input is<br> + 1 BPC).<br> +<br> +devices/vector/gdevpdfi.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-27 11:36:35 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=aee3b922087674ddd7c64444988018fafc3da127">aee3b922087674ddd7c64444988018fafc3da127</a> +<blockquote> +<p> + PDF interpreter - more /Mask strangeness in Acrobat<br> +<br> + Bug #701468 " More weirdness with images containing invalid /Mask values"<br> +<br> + In order to render this file as per Acrobat, we need to ignore the /Mask<br> + array. However, in order to render bug 689717 correctly we need to fix<br> + the /Mask array.<br> +<br> + Both cases are 1 BitsPerComponent DeviceGray images, the only difference<br> + is the actual /Mask values. Bug 689717 has [255 255] while 701468 has<br> + [243 255]. We can differentiate based on whether we have DeviceGray<br> + 1 BPC image, where the Mask values are not the same. In the case they<br> + are different we use the existing technique of calculating the maximum<br> + value and using that (for both, so there is no range). Where there is a<br> + range (ie not a single colour) this is clearly unusable in a 2-colour<br> + image, so ignore the /Mask altogether.<br> +<br> +Resource/Init/pdf_draw.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-26 15:28:33 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ad22dcaa078fd16f2ac395f65b6ad87ba24c8903">ad22dcaa078fd16f2ac395f65b6ad87ba24c8903</a> +<blockquote> +<p> + Fix deep colour knockout logic.<br> +<br> + Problem seen with:<br> +<br> + tests_private/pdf/PDF_1.7_FTS/fts_25_2507.pdf.psdcmyk16.72.0<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-26 14:34:46 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4cda7bfc8cc8c5c4dcd36167191012aa379100ac">4cda7bfc8cc8c5c4dcd36167191012aa379100ac</a> +<blockquote> +<p> + Squash a couple of warnings.<br> +<br> +base/gdevmem.c<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-26 14:01:39 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7b5166b5c65703abb02c15a31c9f8341f54d1470">7b5166b5c65703abb02c15a31c9f8341f54d1470</a> +<blockquote> +<p> + Fix SoftLight blending in deep color transparency.<br> +<br> + As seen with:<br> +<br> + gs -sDEVICE=psdcmyk16 -r72 -dMaxBitmap=80000000 -o out.psd<br> + tests_private/pdf/PDF_1.7_FTS/fts_09_0919.pdf<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-26 11:28:40 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5875be5edeb034787a11760c9330cac039f13044">5875be5edeb034787a11760c9330cac039f13044</a> +<blockquote> +<p> + Fix problems with pngalpha and deep color transparency filling.<br> +<br> + The pngalpha device is created with a depth of 32, with 3 color<br> + components; this was confusing pdf14 into thinking that more<br> + than 8 bits per color were being used, and so deep color buffers<br> + were required.<br> +<br> + To fix this we update the logic to be smarter; in cases where we<br> + don't have a clear determination based on bits alone, we look<br> + at the max_color and max_gray values. Because this code is now<br> + more complex than before, we pull it into a shared function.<br> +<br> +base/gdevdflt.c<br> +base/gdevmem.c<br> +base/gdevp14.c<br> +base/gdevprn.c<br> +base/gsptype1.c<br> +base/gstrans.c<br> +base/gxclthrd.c<br> +base/gxdevcli.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-23 15:06:17 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6e7283fa5bcea9ffbe4bb9da440dd8fa4820e4d6">6e7283fa5bcea9ffbe4bb9da440dd8fa4820e4d6</a> +<blockquote> +<p> + Fix deep color transparency issue.<br> +<br> + Fix overflow in art_pdf_composite_knockout_16, seen in:<br> +<br> + tests_private/comparefiles/Bug690546.pdf.psdcmyk16.72.0<br> +<br> +base/gdevp14.c<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-22 18:24:49 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=628c9741323ea69b0be8e4008a81b1db3d644ab8">628c9741323ea69b0be8e4008a81b1db3d644ab8</a> +<blockquote> +<p> + Fix deep color transparent pattern problems.<br> +<br> + Transparency buffers are held as native endian. Pattern cache<br> + tiles are held as big endian. When we make pattern cache tiles<br> + from transparency buffers we therefore need a conversion.<br> +<br> +base/gdevp14.c<br> +base/gxblend.c<br> +base/gxp1fill.c<br> +base/gxpcolor.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-25 19:35:14 +0200 +</strong> +<br>Till Kamppeter <till.kamppeter@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=be4da9d67cbec784be740086681f96a63496ae48">be4da9d67cbec784be740086681f96a63496ae48</a> +<blockquote> +<p> + "cups"/"pwgraster" output device: Do not output LUTs with CUPS_DEBUG set<br> +<br> + This change lets complete LUTs in the debug output only be listed when<br> + CUPS_DEBUG2 is set and not already with CUPS_DEBUG.<br> +<br> +cups/gdevcups.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-25 19:08:52 +0200 +</strong> +<br>Till Kamppeter <till.kamppeter@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0e28c843e56d1be4638bf9d84a499794534ea0d9">0e28c843e56d1be4638bf9d84a499794534ea0d9</a> +<blockquote> +<p> + "cups"/"pwgraster" output device: Prefer the page size requested by user<br> +<br> + Without special scaling/cropping options ("fit-to-page", "fill",<br> + "crop-to-fitĪ
, ...) PDF and PostScript files printed with CUPS will be<br> + printed with the page sizes of the document's pages and not the size<br> + requested by the user via the "PageSize" or "media" option. This<br> + allows correct printing of jobs with differently sized pages on<br> + printers which have the appropriate sizes loaded without need of<br> + manual intervention. Therefore the CUPS output device is matching each<br> + input page against the sizes listed in the PPD to generate a correct<br> + page geometry for the printer for each page.<br> +<br> + Problem is if there are several equally-sized page size entries in the<br> + PPD. Without further guiding always the first match is used, making<br> + access to special functions provided by the others (like<br> + full-bleed/borderless printing) inaccessible.<br> +<br> + This commit adds the functionality of the user-requested page size<br> + (via "PageSize" or "media" option) being preferred under the matching<br> + page sizes, so that if for example a user selects a full-bleed version<br> + of the desired page size and sends a photo, the photo gets rendered<br> + and printed with the page geometry which the PPD reports for the<br> + full-bleed version.<br> +<br> + Nothing changes if the size of the user-requested page size does not<br> + match the size of the input page at all.<br> +<br> +cups/gdevcups.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-25 12:45:27 +0200 +</strong> +<br>Till Kamppeter <till.kamppeter@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a5ccd009fd632e058b4f0bc2849cfc293b39d1f2">a5ccd009fd632e058b4f0bc2849cfc293b39d1f2</a> +<blockquote> +<p> + "cups"/"pwgraster" output device: Small fix on size matching improvements<br> +<br> + This is a fix for one little oversight on the changes to support matching<br> + the input page size against the imageable areas of the PPD's page sizes.<br> +<br> + This completes the fix of bug 701438.<br> +<br> +cups/gdevcups.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-24 23:11:10 +0200 +</strong> +<br>Till Kamppeter <till.kamppeter@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a0284b5ac8c59014eab90c5a5ec388cd1676b79d">a0284b5ac8c59014eab90c5a5ec388cd1676b79d</a> +<blockquote> +<p> + "cups"/"pwgraster" output device: Improved page size matching with PPD<br> +<br> + Applied the following improvements for finding the correct page size<br> + of the PPD file for the input page:<br> +<br> + - Do not try to match by page size name, the input files do not<br> + contain page size names.<br> +<br> + - Do not only match the input page size against the actual media sizes<br> + reported by the PPD but also to the imageable areas. Media size match<br> + is preferred but if there is no media size match, we accept also<br> + a match of the imageable area. In case of a match of the imageable<br> + area we position the input page in the imageable area of the output<br> + page.<br> +<br> + - More debug output.<br> +<br> + - In case of a custom page size (no match with PPD sizes) the page<br> + size name in the CUPS Raster output is a correct "Custom.XXXxYYY"<br> + and not the default page size name.<br> +<br> + This should fix bug #701438.<br> +<br> +cups/gdevcups.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-23 18:09:32 +0200 +</strong> +<br>Till Kamppeter <till.kamppeter@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ee43ff891b51f0ccec3ba38d538d3e23441ed439">ee43ff891b51f0ccec3ba38d538d3e23441ed439</a> +<blockquote> +<p> + "cups"/"pwgraster" output device: Reduced page size comparison tolerances<br> +<br> + Before each page gets rendered its size is compared to the page sizes<br> + of the PPD file to select the actual page size for the output. Reduced<br> + the tolerances from 7% for the long edge and 5% for the short edge to<br> + 1%, as before easily wrong sizes got picked (See also bug 701438).<br> +<br> +cups/gdevcups.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-23 10:11:05 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0311b61d5df67cd98e2c2d23ef3cec1cc4faa800">0311b61d5df67cd98e2c2d23ef3cec1cc4faa800</a> +<blockquote> +<p> + Windows Installer: cope with COMPILE_INITS=0<br> +<br> + We default to COMPILE_INITS=1, and that was the only case that the installer<br> + handled - i.e. building the installer with COMPILE_INITS=0 would install an<br> + executable that wouldn't work without extra action (-I.. or similar).<br> +<br> + This changes the installer compiler invocation, and the installer creation<br> + so it behaves as it does now with COMPILE_INITS=1, but with COMPILE_INITS=0 the<br> + installer will write the path to Resource/Init into the GS_LIB registry<br> + key.<br> +<br> +psi/nsisinst.nsi<br> +psi/winint.mak<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-22 23:30:34 +0200 +</strong> +<br>Till Kamppeter <till.kamppeter@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=137a0bda39f861600488b5a11c63914854c454c8">137a0bda39f861600488b5a11c63914854c454c8</a> +<blockquote> +<p> + "cups"/"pwgraster" output device: Produce more debug output<br> +<br> + When building with CUPS_DEBUG now debug output for the process of<br> + matching the page geometry with the PPD file's page sizes is<br> + produced.<br> +<br> +cups/gdevcups.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-22 08:58:01 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=09b53ebdc674f9f6e7a9c445e92617312dd93ab3">09b53ebdc674f9f6e7a9c445e92617312dd93ab3</a> +<blockquote> +<p> + Handle explicit '\' escaping in path matching<br> +<br> + As well as having to cope with both '/' and '\' as directory separators on<br> + Windows, it turns out we also need to cope with the backslash separator being<br> + explicitly escaped ("\\") - the explicit is added by the Postcript path<br> + templating code in gs_init.ps.<br> +<br> + I don't want to change templating code because that would likely have<br> + implications in a lot of other places.<br> +<br> +base/gpmisc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-22 10:51:28 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f1692a288f1a17930f0b71e540908398a17d5366">f1692a288f1a17930f0b71e540908398a17d5366</a> +<blockquote> +<p> + Better CMYK conversion for bmpcmp<br> +<br> +toolbin/bmpcmp.c<br> +toolbin/bmpcmptab.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-21 17:49:32 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c8aaf3b7bc4232997d434170827fffd6887fc88f">c8aaf3b7bc4232997d434170827fffd6887fc88f</a> +<blockquote> +<p> + Update bmpcmp.c to read psdrgb rather than psdbgr.<br> +<br> +toolbin/bmpcmp.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-21 15:33:27 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9ba1827e220cd49a6732c04fcf3e55a268014377">9ba1827e220cd49a6732c04fcf3e55a268014377</a> +<blockquote> +<p> + Fix commit ec0b35fed3de: "Handle directory separators..."<br> +<br> + The logic in the above fix was wrong.<br> +<br> +base/gpmisc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-21 14:28:20 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7d0206d2b118b26f6d87ba8f09d077eba417e4c9">7d0206d2b118b26f6d87ba8f09d077eba417e4c9</a> +<blockquote> +<p> + Bug 701451: Fix clist color_usage calculations for shadings.<br> +<br> + Or rather, don't attempt to calculate them badly, and just<br> + use the safe "all colors" value.<br> +<br> +base/gxclrect.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-21 10:10:51 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=320ec9672b987a765324f89450de08b70aafbcd3">320ec9672b987a765324f89450de08b70aafbcd3</a> +<blockquote> +<p> + PDF interpreter - review .forceput security<br> +<br> + Bug #701450 "Safer Mode Bypass by .forceput Exposure in .pdfexectoken"<br> +<br> + By abusing the error handler it was possible to get the PDFDEBUG portion<br> + of .pdfexectoken, which uses .forceput left readable.<br> +<br> + Add an executeonly appropriately to make sure that clause isn't readable<br> + no mstter what.<br> +<br> + Review all the uses of .forceput searching for similar cases, add<br> + executeonly as required to secure those. All cases in the PostScript<br> + support files seem to be covered already.<br> +<br> +Resource/Init/pdf_base.ps<br> +Resource/Init/pdf_draw.ps<br> +Resource/Init/pdf_font.ps<br> +Resource/Init/pdf_main.ps<br> +Resource/Init/pdf_ops.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-21 10:56:02 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e5660f15f5fd4615254acec7ed403b4a7984cb09">e5660f15f5fd4615254acec7ed403b4a7984cb09</a> +<blockquote> +<p> + Handle directory separators in access control matching<br> +<br> + On Windows, we end up dealing with a mishmash of "/" and "\" as directory<br> + separators, so a simple equality check isn't sufficient.<br> +<br> + Since there is already (platform specific) function for checking whether a<br> + string (or part thereof) is a directory separation, use it.<br> +<br> +base/gpmisc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-20 21:50:18 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=596e9baa1b24b0a9dac4d8bad1ea80cd23dcab79">596e9baa1b24b0a9dac4d8bad1ea80cd23dcab79</a> +<blockquote> +<p> + Disable use of alternate tint transform ICC profile<br> +<br> + A prior commit introduced the use of color management<br> + if the DeviceN or Separation device had an ICC profile<br> + associated with the colorants. While there is an argument<br> + for doing this, it is not the standard behavior seen in<br> + AR. Disabling for now and will likely turn this into a<br> + command line option.<br> +<br> +base/gxcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-20 18:48:49 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7547a2fc593e3a0bb8ea72f661389cd908c382f7">7547a2fc593e3a0bb8ea72f661389cd908c382f7</a> +<blockquote> +<p> + Fix crashes in RAW_DUMP debug code.<br> +<br> + Dump the buffer before freeing the device, or the pointer will no<br> + longer be valid.<br> +<br> + Also, don't access through ppatdev14 when we know it's NULL.<br> +<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-20 18:47:09 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=421727ed068b3f41fdbd9657d759397610fe8821">421727ed068b3f41fdbd9657d759397610fe8821</a> +<blockquote> +<p> + Fix deep color transparency pattern copying problem.<br> +<br> + The following test:<br> +<br> + tests/pdf/pattrans_solid_nonrect.pdf.psdcmyk16.300.1..gs<br> +<br> + among others, was showing problems, due to us treating the offset<br> + as bytes rather than shorts.<br> +<br> +base/gxp1fill.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-20 14:29:33 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f9052f1debff2168d5a2606fa35bcaaf6f6f2ec7">f9052f1debff2168d5a2606fa35bcaaf6f6f2ec7</a> +<blockquote> +<p> + Avoid signed overflow in deep transparency calculations.<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-20 12:24:03 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=898c9e5f06bb44ec3fd262b47eeaa5028e18773f">898c9e5f06bb44ec3fd262b47eeaa5028e18773f</a> +<blockquote> +<p> + Fix overflow in deep color blending.<br> +<br> + Multiplying a 16bit unsigned value with a 16 bit signed value<br> + in a 32bit int means we lose the sign bit. Sacrifice a bit of<br> + accuracy to avoid that.<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-20 10:10:28 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=85c9d6de80ba57deeee289238aa1c0202f584c3c">85c9d6de80ba57deeee289238aa1c0202f584c3c</a> +<blockquote> +<p> + make .forceput inaccessible<br> +<br> + Bug #701343, #701344, #701345<br> +<br> + More defensive programming. We don't want people to access .forecput<br> + even though it is no longer sufficient to bypass SAFER. The exploit<br> + in #701343 didn't work anyway because of earlier work to stop the error<br> + handler being used, but nevertheless, prevent access to .forceput from<br> + .setuserparams2.<br> +<br> +Resource/Init/gs_lev2.ps<br> +Resource/Init/gs_pdfwr.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-19 10:03:57 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3ba6d871c70398cfbd15b619127bf13ddea13282">3ba6d871c70398cfbd15b619127bf13ddea13282</a> +<blockquote> +<p> + Handle drag'n'drop file name/paths<br> +<br> + Because we now run by default with the file access permission active,<br> + we need to do additional work for Windows drag and drop files, so they don't<br> + throw an invalidaccess error (since we implement drag and drop by sending<br> + characters to the gs console to do '(file) run').<br> +<br> + The problem is, we cannot add the file to read list, send the characters to the<br> + console, and remove the file from the read list because, although SendMessage()<br> + blocks until the message is handles, WriteConsoleInput() does not block until<br> + the console buffers are consumed (i.e. it is asynchronous). So, there is no<br> + certainty when the final SendMessage() in WM_DROPFILES case is finished that<br> + Ghostcript will actually have run the file.<br> +<br> + So, we create a list of dropped file names, add them to the permit read list,<br> + when the next WM_DROPFILES event happens, or a WM_DESTROY event, we drop<br> + file names from the permit read list before, if necessary, adding the current<br> + ones.<br> +<br> +psi/dwimg.c<br> +psi/dwmain.c<br> +psi/dwmainc.c<br> +psi/dwtext.c<br> +psi/dwtext.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-16 15:43:32 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d2e36e8ef01546aaee0cd0531fbc0fa932b23b99">d2e36e8ef01546aaee0cd0531fbc0fa932b23b99</a> +<blockquote> +<p> + Squash warnings in claptrap.<br> +<br> + Thanks to William Bader for highlighting these.<br> +<br> +base/claptrap-planar.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-16 15:28:49 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e34d5606835fc587e222b80bf9cac1bc40c4790b">e34d5606835fc587e222b80bf9cac1bc40c4790b</a> +<blockquote> +<p> + Squash warning in gdevpsd.c<br> +<br> + Thanks to William Bader for spotting this.<br> +<br> +devices/gdevpsd.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-16 13:08:14 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f416b415e8e3a25446b66bf1a6253f86be0366de">f416b415e8e3a25446b66bf1a6253f86be0366de</a> +<blockquote> +<p> + Squash some compiler warnings.<br> +<br> +base/gslibctx.c<br> +base/gslibctx.h<br> +devices/gdevpdfimg.c<br> +devices/vector/gdevpdfu.c<br> +pcl/pl/plmain.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-15 11:39:51 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9ead927968ff8104e1a81df1590fced74927639d">9ead927968ff8104e1a81df1590fced74927639d</a> +<blockquote> +<p> + Dates and versions for 9.28 RC 1<br> +<br> +base/gscdefs.h<br> +doc/DLL.htm<br> +doc/Deprecated.htm<br> +doc/Develop.htm<br> +doc/Devices.htm<br> +doc/Drivers.htm<br> +doc/Fonts.htm<br> +doc/History9.htm<br> +doc/Install.htm<br> +doc/Internal.htm<br> +doc/Language.htm<br> +doc/Lib.htm<br> +doc/Make.htm<br> +doc/News.htm<br> +doc/Ps-style.htm<br> +doc/Ps2epsi.htm<br> +doc/Psfiles.htm<br> +doc/Readme.htm<br> +doc/Release.htm<br> +doc/SavedPages.htm<br> +doc/Source.htm<br> +doc/Unix-lpr.htm<br> +doc/Use.htm<br> +doc/VectorDevices.htm<br> +doc/WhatIsGS.htm<br> +doc/gs-vms.hlp<br> +doc/sample_downscale_device.htm<br> +doc/subclass.htm<br> +doc/thirdparty.htm<br> +man/dvipdf.1<br> +man/gs.1<br> +man/gslp.1<br> +man/gsnd.1<br> +man/pdf2dsc.1<br> +man/pdf2ps.1<br> +man/pf2afm.1<br> +man/pfbtopfa.1<br> +man/printafm.1<br> +man/ps2ascii.1<br> +man/ps2epsi.1<br> +man/ps2pdf.1<br> +man/ps2pdfwr.1<br> +man/ps2ps.1<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-15 11:35:56 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ae7dea2b9bd068f61b6aef312a7f4cbc9860cac3">ae7dea2b9bd068f61b6aef312a7f4cbc9860cac3</a> +<blockquote> +<p> + Revision date<br> +<br> +base/version.mak<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-15 17:06:02 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2f8e2423c860e89b325675dc1311819179740c76">2f8e2423c860e89b325675dc1311819179740c76</a> +<blockquote> +<p> + Add -dNOSAFER for Windows installer cidfmap creation<br> +<br> +psi/nsisinst.nsi<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-15 14:36:55 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=226fb24dbe4f844b8c7531be3eccc2bfae1a103d">226fb24dbe4f844b8c7531be3eccc2bfae1a103d</a> +<blockquote> +<p> + ps2write - don't password encrypt PostScript output!<br> +<br> + Noticed while testing the args commit; if we set -sOwnerPassword (to<br> + create a password-protected PDF file), but select (e)ps2write as the<br> + device, then the resulting PostScript file would have all the streams<br> + (in a PDF sense) encrypted with PDF password encryption.<br> +<br> + Unsurprisingly, this result in a completely unusable PostScript file.<br> + Lets not permit that....<br> +<br> +devices/vector/gdevpdfp.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-13 14:43:51 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fd14a8e3701a7f75d758a1e536bcafbddeb70289">fd14a8e3701a7f75d758a1e536bcafbddeb70289</a> +<blockquote> +<p> + Document the new SAFER/file access controls<br> +<br> + The documentation for the old SAFER remains in place (noted as deprecated) until<br> + we actually remove it. Document accessing the old SAFER functionality<br> + (-dOLDSAFER).<br> +<br> + Generally, tidy up the HTML/formatting of the parameter and operator lists<br> + in Use.htm and Language.htm - mainly making indenting even and consistent.<br> +<br> + List .setpdfwrite as deprecated<br> +<br> + Include setting the target of the first parameter of gsapi_new_instance() to<br> + NULL before calling it, and fix the examples in API.htm<br> +<br> +doc/API.htm<br> +doc/Language.htm<br> +doc/Use.htm<br> +doc/VectorDevices.htm<br> +doc/style.css<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-13 14:40:45 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=79a06b45e784e6839b2b2129cd2620ea606254e1">79a06b45e784e6839b2b2129cd2620ea606254e1</a> +<blockquote> +<p> + Enable new 'SAFER' protection by default.<br> +<br> + We'll now run by default with file access controls enabled. SAFER (and<br> + .setsafe) now *only* enables file access controls. The old SAFER functionality<br> + is (temporarily) available by specifying "-dSAFER -dOLDSAFER" on the command<br> + line, or "-dOLDSAFER" before the call to .setsafe.<br> +<br> +Resource/Init/gs_init.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-13 08:28:06 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9883f2a931407503778bb94948b47480eff858b2">9883f2a931407503778bb94948b47480eff858b2</a> +<blockquote> +<p> + Add null file to the permit writing list<br> +<br> +base/gslibctx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-12 12:21:50 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7abf720f46dd9ff6018b7f29141ba0573016d59d">7abf720f46dd9ff6018b7f29141ba0573016d59d</a> +<blockquote> +<p> + Use enum values for shutting down the file access lists<br> +<br> +base/gslibctx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-09 14:43:17 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d86ecec686d77e69f7c4a10df9da8c4cd8336a03">d86ecec686d77e69f7c4a10df9da8c4cd8336a03</a> +<blockquote> +<p> + Tweak to better handle undefined transparency ops<br> +<br> +examples/transparency_example.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-08 10:46:39 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7ca1bb5794997e0dba059a5be6f85a9eaefc915d">7ca1bb5794997e0dba059a5be6f85a9eaefc915d</a> +<blockquote> +<p> + Fix gs_add_explicit_control_path()<br> +<br> + it was always adding to the "read" list, rather than the list requested by the<br> + parameter.<br> +<br> +base/gslibctx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-08 10:33:18 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=34dac4d2a1b195536fcb9d796168cd1360c0e500">34dac4d2a1b195536fcb9d796168cd1360c0e500</a> +<blockquote> +<p> + Don't bind and undefine .copytree<br> +<br> + .copytree is a Postscript proc that calls itself recursively, hence we cannot<br> + bind it nor undefine it.<br> +<br> +Resource/Init/gs_setpd.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-06 09:32:32 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4d53f6ee868205c76950027e76a27f0278513a39">4d53f6ee868205c76950027e76a27f0278513a39</a> +<blockquote> +<p> + Tweak the interaction of file permissions and -I<br> +<br> + The new file permissions code differentiates between 'path', 'path/' and<br> + 'path/*', whilst the old -I code did not.<br> +<br> + This slightly modifies how the -I stuff drives the file permissions stuff so it<br> + works (more) like the previous -I behaviour.<br> +<br> + The remaining difference is that the new code always treats '*' as a wildcard,<br> + where the old code would permit '*' as a 'real' character in a path.<br> +<br> +Resource/Init/gs_init.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-15 09:52:04 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=00af0eb11b82c4dfddbe91bcb70caed2e61a1cc8">00af0eb11b82c4dfddbe91bcb70caed2e61a1cc8</a> +<blockquote> +<p> + pdfwrite/ps2write/pdfimage - record args used<br> +<br> + Following on from commit 813d7e96c8733f85d59a62732171cf7cedfc087d this<br> + adds functionality to the pdfwrite and pdfimage families of devices to<br> + actually write the args that were used to generate the output file into<br> + the final output file, as comments.<br> +<br> + Output files are somewhat larger with this commit, but only very small<br> + files are in any way significantly larger. We do have a number of such<br> + files in our test suite which exhibit larger output ( > 5%increase).<br> +<br> +devices/gdevpdfimg.c<br> +devices/vector/gdevpdf.c<br> +devices/vector/gdevpdfu.c<br> +devices/vector/gdevpdfx.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-12 16:30:46 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=813d7e96c8733f85d59a62732171cf7cedfc087d">813d7e96c8733f85d59a62732171cf7cedfc087d</a> +<blockquote> +<p> + Capture args to feed to pdfwrite.<br> +<br> + To facilitate debugging, we want a way to pickle the gs invocation<br> + used into device output (for devices that want it).<br> +<br> + We therefore amend the argument processing logic to pass arguments<br> + to gs_lib_ctx, where they will are 'sanitized' and stored in a list.<br> + This list can then be accessed by a device.<br> +<br> + We are careful to sanitize the args so as not to reveal paths or<br> + secret passwords/code etc. Essentially we never store any filenames<br> + or string values stored (except for certain whitelisted -s options).<br> +<br> + It is likely that we'll want to expand the whitelisted values in<br> + future.<br> +<br> +base/gsargs.c<br> +base/gsargs.h<br> +base/gslibctx.c<br> +base/gslibctx.h<br> +pcl/pl/plmain.c<br> +psi/imainarg.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-14 16:47:36 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8ba95fb06387572160fee5e4c1e51d972401566e">8ba95fb06387572160fee5e4c1e51d972401566e</a> +<blockquote> +<p> + Fix gs_lib_ctx memory calls to use the correct memory pointer.<br> +<br> +base/gslibctx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-14 08:03:45 -0700 +</strong> +<br>Ray Johnston <ray.johnston@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ddddd71785d058b036775566d36d6848c9817f80">ddddd71785d058b036775566d36d6848c9817f80</a> +<blockquote> +<p> + Fix -F____ and -f____ to actually run the file ____.<br> +<br> + Commit 7ecbfda9 broke -F completely since it requires the file to run to<br> + immediately follow the switch, and -f____ use to run the file, but since<br> + gs_add_control_path returns 0 as long as there was no error, the code<br> + never called argproc. Also, argproc already does the add_control_path<br> + and remove_control_path, so simplify -f and -F code.<br> +<br> + Also gs_add_outputfile_control_path was ignoring the return code when<br> + adding the full pipe string as a path, so fix it.<br> +<br> + Note that plmain ignores the return code from gs_remove_control_path,<br> + but that should be OK.<br> +<br> +base/gslibctx.c<br> +psi/imainarg.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-12 13:53:29 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3eb2b1337260a17274588d377032e1f9953062fd">3eb2b1337260a17274588d377032e1f9953062fd</a> +<blockquote> +<p> + Squash double -> int warning message with explicit cast.<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-13 11:54:36 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8b5af0e2db28be36d96de97eb1a145d5716ffea3">8b5af0e2db28be36d96de97eb1a145d5716ffea3</a> +<blockquote> +<p> + Tweak lcms to optimise the pipeline before consulting plugins.<br> +<br> + This allows us to recognise identity transforms before selecting<br> + one of our optimised lookup functions. Firstly, however optimised<br> + our code is, we aren't going to beat the identity code. Secondly,<br> + lcms doesn't calculate the tables for identity transforms, so<br> + our code can fall in a heap here.<br> +<br> +lcms2mt/src/cmsxform.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-13 16:05:37 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=15d95340389f0f46bd214803ec19685c0a738a0e">15d95340389f0f46bd214803ec19685c0a738a0e</a> +<blockquote> +<p> + Deprecate .setpdfwrite<br> +<br> + The .setpdfwrite operator nowadays does nothing more than increase the<br> + VM threshold, which is relatively pointless so we're going to remove it.<br> +<br> + In this commit; add a warning message to the .setpdfwrite operator so<br> + that anyone using it will be warned. Remove usage from the various<br> + shell scripts we provide.<br> +<br> +Resource/Init/gs_pdfwr.ps<br> +lib/dvipdf<br> +lib/ps2pdfwr<br> +lib/ps2pdfxx.bat<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-12 16:06:21 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8cc13d54850af14a07e72f73cca20e96ed01fd03">8cc13d54850af14a07e72f73cca20e96ed01fd03</a> +<blockquote> +<p> + PDF interpreter - ignore visibility of annotations for devices which support them<br> +<br> + No bug for this, arose from a Stack Overflow question, but its a FAQ<br> + as well.<br> +<br> + It used to be the case that the PDF interpreter would (and should)<br> + render files containing annotations with the Print and NoView flags<br> + differently, depending on whether the destination was to be rendered<br> + or sent to a high level device. This is controlled with the -dPrinted<br> + flag to determine whether annotations should be treated as for a Print<br> + device or a View device.<br> +<br> + This doesn't make a lot of sense for pdfwrite though. We really want to<br> + keep the Annotation 'as is' and let the viewer or printer of the output<br> + PDF file deal with it.<br> +<br> + In the past we've moved the annotation handling for pdfwrite and,<br> + technically, for any device which directly supports annotations from<br> + 'drawannot' to 'preserveannot'. Now that we've done that, it makes some<br> + sense to have the 'preserveannot' code no longer check the annotation's<br> + visibility, but simply preserve it as you would expect. NOTE we do check<br> + the visibility state of annotations that we don't know how to handle.<br> + These will not be preserved as annotations, but will be drawn into the<br> + page contents, so we don't want to render any which should be invisible.<br> + Such annotations are still affected by -dPritned.<br> +<br> +Resource/Init/pdf_draw.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-09 15:57:54 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=368bc91bf0bba66f31204e1ee57da7c9b70b32bb">368bc91bf0bba66f31204e1ee57da7c9b70b32bb</a> +<blockquote> +<p> + pdfwrite - fix a minor error<br> +<br> + I don't think this causes any actual problems, but the correct return<br> + should be 0, not an error, when we can't find a Pattern resource.<br> +<br> +devices/vector/gdevpdfi.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-09 15:56:45 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9a871de445eaed295748a3b489e138e87b9e0b65">9a871de445eaed295748a3b489e138e87b9e0b65</a> +<blockquote> +<p> + Transparency compositor - forward unhandled special_ops to target device<br> +<br> + Noticed while doing earlier work. The pdf14 device only passed on a few<br> + specific gxdso_ special_op types to the target device, the remainder<br> + were sent to the default handler. This seems wrong and caused problems<br> + for my new gxdso at the time. Instead of it going through the pdf14<br> + device and ending up at pdfwrite (or the default handler for other<br> + devices) it was always going to the default handler and never making<br> + it to pdfwrite when rendering transparency.<br> +<br> + The pdf14 device should instead handle any gxdso_ special_ops that vary<br> + depending on rendering. For instance the JPEG passthrough should *not*<br> + be passed to the target device, the pdf14 device needs to have the<br> + uncompressed image data to render it to the compositor buffer.<br> +<br> + This commit adds handlers for such gxdso_ special ops, and passes all<br> + the remaining unhandled ones to the target device for processing.<br> +<br> + For some reason this causes diffs in halftones, I have no idea why. but<br> + they don't seem like problems.<br> +<br> +base/gdevp14.c<br> +base/gxdevsop.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-09 17:14:42 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1ca2c331684ca2912c431771d1aac8bc5cb42e76">1ca2c331684ca2912c431771d1aac8bc5cb42e76</a> +<blockquote> +<p> + Fix line endings (file had some '\r' line endings).<br> +<br> +Resource/Init/pdf_draw.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-08 09:07:09 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e9e253e1dbc87d6ef772936130076e1ba3b81867">e9e253e1dbc87d6ef772936130076e1ba3b81867</a> +<blockquote> +<p> + pdfwrite - don't permit fallback font substitution with PDF/A<br> +<br> + Bug #701373 "PDFA fails to validate by Preflight"<br> +<br> + The inptu is a PDF file which is missing two fonts, Helvetica and<br> + Calibri. For both fonts we use /Helvetica as a substitute. For the<br> + missing Helvetica font this is correct, but for the missing Calibri font<br> + this leads to problem when creating PDF/A otuput files.<br> +<br> + Firstly, we now have two different fonts, with differing /Widths which<br> + are potentially attempting to reference the same glyphs from a single<br> + font. Secondly, no matter what we do, the /Widths from the Calibri font<br> + are not going to match the actual glyph metrics from Helvetica.<br> +<br> + Since there is no possible way to deal with the second problem, because<br> + either the metrics won't match the /Widths, or the text will be misplaced<br> + if we use Widths that are not those from Calibri, there is no point in<br> + trying to tackle the first problem.<br> +<br> + So here we introduce a new special_op 'EventInfo' which passes a single<br> + name to the device. The name is the name of the event which occurred. For<br> + now this can only be 'SubstitutedFont'. The only device which handles<br> + this event is pdfwrite, all other devices simply ignore it. The pdfwrite<br> + device checks to see if it is creating a PDF/A otuptu file, and if it is<br> + then it emits a warnign and aborts the production of PDF/A.<br> +<br> +Resource/Init/pdf_font.ps<br> +base/gdevdflt.c<br> +base/gdevp14.c<br> +base/gxdevsop.h<br> +devices/vector/gdevpdfi.c<br> +psi/zdevice.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-14 16:52:28 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=009d44b855dcda9d0d9ecf5ca20944504648eebe">009d44b855dcda9d0d9ecf5ca20944504648eebe</a> +<blockquote> +<p> + CompatibleOverprint Mode<br> +<br> + Ray did the interpreter work on this and Michael did the graphics<br> + library portion.<br> +<br> + For the interpreter:<br> + When OP is set, change to CompatibleOverprint mode, but don't push a<br> + transparency group or change opacityalpha when the current blendmode<br> + is Normal or Compatible. This was determined based on the note on page<br> + 568 of the PDF 1.7 spec (section 7.6.3 in the area titled "Compatibility<br> + with Opaque Printing"). It states:<br> +<br> + Note: It is not necessary to create such an implicit transparency<br> + group if the current blend mode is Normal; simply substituting<br> + the CompatibleOverprint blend mode while painting the object<br> + produces equivalent results. There are some additional cases in<br> + which the implicit transparency group can be optimized out.<br> +<br> + After painting, if the group was pushed, pop the group, and restore the<br> + opacityalpha and shapealpha,then restore the blendmode (if it was<br> + CompatibleOverprint).<br> +<br> + NB, we don't attempt to optimize any other groups hinted at in<br> + Adobe's comment.<br> +<br> + In addition, if we are going to an output device that handles transparency<br> + compositor actions do not do any of the above stuff.<br> +<br> + For the graphics library:<br> + When doing blending in non-isolated groups with compatible overprint<br> + the non-drawn colors must be corrected during the fill rectangles to<br> + ensure that the proper amount is maintained with the changing group<br> + alpha values. This is poorly documented in the specification.<br> + In addition, the spec is poorly written in terms of how the blend<br> + computation is performed for overprint compatible.<br> +<br> + The spec claims the following:<br> +<br> + If the overprint mode is 1 (nonzero overprint mode) and the<br> + current color space and group color space are both DeviceCMYK,<br> + then only process color components with nonzero values replace<br> + the corresponding component values of the backdrop. All other<br> + component values leave the existing backdrop value unchanged.<br> + That is, the value of the blend function B(Cb,Cs) is the source<br> + component cs for any process (DeviceCMYK) color component whose<br> + (subtractive) color value is nonzero; otherwise it is the<br> + backdrop component cb. For spot color components, the value is<br> + always cb.<br> +<br> + The equation for compositing is<br> +<br> + ar*Cr = (1-as)*Cb + as*[(1-ab)*Cs+ab*B(Cb,Cs)]<br> +<br> + Now if I simply set B(cb,cs) to cb for the case when the<br> + DevieCMYK value (with opm true) is zero I get<br> +<br> + ar*Cr = (1-as)*Cb + as*[(1-ab)*Cs+ab*Cb]<br> +<br> + But what I am seeing with AR is<br> + ar*Cr = (1-as)*Cb + as*[(1-ab)*Cb+ab*Cb] = (1-as)*Cb + as*Cb = Cb<br> + which is what I think we want.<br> +<br> + The description in the spec is confusing as it says<br> + "then only process color components with nonzero values replace<br> + the corresponding component values of the backdrop. All other<br> + component values leave the existing backdrop value unchanged"<br> +<br> + which makes sense for overprinting,<br> +<br> + vs.<br> +<br> + "That is, the value of the blend function B(Cb,Cs) is the source<br> + component cs for any process (DeviceCMYK) color component whose<br> + (subtractive) color value is nonzero; otherwise it is the<br> + backdrop component cb."<br> +<br> + Which is NOT the same thing as leaving the backdrop unchanged<br> + with the compositing equation<br> + ar*Cr = (1-as)*Cb + as*[(1-ab)*Cs+ab*B(Cb,Cs)]<br> +<br> + For this to work, we need to carry out the operation during<br> + the mixing of the source with the blend result. Essentially<br> + replacing that mixing with the color we have here.<br> +<br> +Resource/Init/pdf_draw.ps<br> +Resource/Init/pdf_main.ps<br> +Resource/Init/pdf_ops.ps<br> +base/gdevp14.c<br> +base/gdevp14.h<br> +base/gstrans.h<br> +base/gxblend.c<br> +base/gxclpath.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-07 10:24:49 -0700 +</strong> +<br>Ray Johnston <ray.johnston@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d8f05309d5e54b6e75c2b78af9c0bcf5f62b493c">d8f05309d5e54b6e75c2b78af9c0bcf5f62b493c</a> +<blockquote> +<p> + Bug 701308: Fix clip transpose logic that resulted in garbled output.<br> +<br> + This seems like it should have showed up earlier, but when the clip<br> + rectangle list was transposed, the _t1 and _s1 clip_fill_rectangle_<br> + functions were confused about the coordinates being sent to the target<br> + device fill_rectangle.<br> +<br> + Also during debug, I found that if the clip list consisted of more than<br> + a single rectangle, clip_get_clipping_box was only using the first rect,<br> + rather than accumulating the outer_box for the entire list.<br> +<br> +base/gxclip.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-06 12:44:49 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ff856d0c44ce7d3f4d204f4a405857a6a6672a80">ff856d0c44ce7d3f4d204f4a405857a6a6672a80</a> +<blockquote> +<p> + pdfwrite - handle nested Patterns inside a transparency Group<br> +<br> + Bug #701181 "Incorrect output after ghostscript processing of a PDF file"<br> +<br> + The PDF file is constructed in a somewhat sub-optimal fashion. Each<br> + background square 'grid' is a Form, each Form draws the content by<br> + filling the area with a solid colour, and then drawing white lines<br> + across it. The white lines (actually rectangles) are drawn using a<br> + Pattern.<br> +<br> + So far so good, however the Pattern simply executes a Form, that Form<br> + then fills another rectangle, with another Pattern, its this final<br> + pattern which does the drawing.<br> +<br> + This is two levels of indirection more than required.<br> +<br> + Normally this isn't a problem because we don't attempt to preserve<br> + Forms from PDF files (and this is one example of why we don't). But....<br> + If the file involves transparency Groups, then we must use a Form<br> + XObject for the Group.<br> +<br> + In this case the CTM of the first pattern is the CTM of the 'enclosing<br> + context', ie the Form, but the CTM of the second pattern is also the<br> + CTM of the 'enclosing context', but now that means the first pattern,<br> + not the Group.<br> +<br> + To cater for this we track the number of patterns defined since the last<br> + Form definition. If its 0 (ie this is the first pattern since a Form<br> + definition) then we just use the CTM. If its greatre than 0, however,<br> + then we 'undo' the scaling applied by pdfwrite, in order to get back to<br> + the CTM of the enclosing pattern.<br> +<br> + Its possible that more extreme examples (patterns inside patterns<br> + inside groups inside patterns inside groups) might still not be entirely<br> + correct, but we have no examples of this (Patterns inside patterns are<br> + relatively rare). If we find any we can revisit this.<br> +<br> +devices/vector/gdevpdfb.h<br> +devices/vector/gdevpdfi.c<br> +devices/vector/gdevpdft.c<br> +devices/vector/gdevpdfv.c<br> +devices/vector/gdevpdfx.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-05 17:50:04 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f69b63a3dc3bb7671df956587fe2520f8badab88">f69b63a3dc3bb7671df956587fe2520f8badab88</a> +<blockquote> +<p> + PDF interpreter - cope with strangely constructed Pages trees<br> +<br> + Bug #700953 "Error: /execstackoverflow in --.systemvar--"<br> +<br> + The pre-interpretation scan of the Pages tree looking for loops in the<br> + tree structure uses recursion; if a Pages tree is badly constructed it<br> + is possible to recurse enough times to cause an overflow of the exec<br> + stack.<br> +<br> + We can cope with this by aborting the scan and continuing to interpret<br> + and render the PDF file, because the regular processing of PDF file<br> + doesn't use recursion.<br> +<br> + Of course, this does mean that we lose the check for loops in the Pages<br> + tree (at least, loops beyond the point where we overflow the exec stack)<br> + but both conditions are rare, so I think its worth doing.<br> +<br> + We do still raise a warning.<br> +<br> +Resource/Init/pdf_main.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-05 10:05:58 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fd915a81c605a52f58855bd233c19aaa373b2f69">fd915a81c605a52f58855bd233c19aaa373b2f69</a> +<blockquote> +<p> + pdfwrite - improve CIDFont generation<br> +<br> + Bug 701010 "Low Printer VM and gswinc32.exe crashing on postscript file with Korean text"<br> +<br> + The problem in this case is that the PostScript uses a CIDFont with two<br> + descendant fonts. PDF only permits a single descendant font in a CIDFont<br> + so pdfwrite can't simply copy the font 'as is'.<br> +<br> + Instead we create a type 0 font (CIDFont) for each descendant and switch<br> + between them as required.<br> +<br> + The problem here is that the code for retrieving an existing Type 0<br> + CIDFont for a given descendant in the PostScript assumed that the name<br> + of the CIDFont would be of the form /FontName-CMapName, and the font<br> + we have here does not match that.<br> +<br> + In fact, I'm not at all sure that this is *ever* the case, certainly<br> + none of our test files seem to exercise this (bearing in mind that its<br> + the Type 0 CIDFont generated by pdfwrite that we are checking against<br> + and I can see no code that created a name of that form).<br> +<br> + So what was happening was that every time the PostScript CIDFont<br> + switched descendants, we generated a new Yype 0 font, along with all the<br> + attendant structures, such as a ToUnicode CMap (256kB on its own). In<br> + fact the first line of text in the file switches descendants 26 times,<br> + leading to us creating something like 21 MB of extra font information.<br> +<br> + We now extend the check so that if the name is not FontName-CMapName we<br> + check the FontName and the CMap Name (which we do also store) separately<br> + and if they match we reuse the existing Type 0 font.<br> +<br> + The supplied test file now runs to completion, all 217 pages, with a<br> + peak memory usage of ~22.8MB whereas it previously exhausted memory,<br> + using ~2GB, at page 111. In addition the resulting PDF file is around<br> + 95% smaller and the performance is noticeably improved on this file.<br> +<br> +devices/vector/gdevpdtt.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-02 15:18:26 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5b85ddd19a8420a1bd2d5529325be35d78e94234">5b85ddd19a8420a1bd2d5529325be35d78e94234</a> +<blockquote> +<p> + Bug 701394: protect use of .forceput with executeonly<br> +<br> +Resource/Init/gs_type1.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-31 13:34:06 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3ed82a40fd4b49728c79955319b6d67d1e092006">3ed82a40fd4b49728c79955319b6d67d1e092006</a> +<blockquote> +<p> + Add a way to record the selected cmap<br> +<br> + (for the pdfi branch)<br> +<br> +base/fapi_ft.c<br> +base/gxfapi.h<br> +pcl/pl/plfapi.c<br> +psi/zfapi.c<br> +xps/xpsfapi.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-08-01 08:55:31 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1eb609f130c397144702097f4d987f3b956770f9">1eb609f130c397144702097f4d987f3b956770f9</a> +<blockquote> +<p> + Add 'post' table name lookup to TTF in graphics lib<br> +<br> + Make Mac Roman glyph ordering available to 'clients'<br> +<br> + (in support of the pdfi branch)<br> +<br> +base/gstype42.c<br> +base/gxfont42.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-31 15:04:37 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=788958decad94b7b3f7a478cfb57724323041bf5">788958decad94b7b3f7a478cfb57724323041bf5</a> +<blockquote> +<p> + Fix Separation and DeviceN Alternate colour space generation<br> +<br> + Bug #701369 "PB with Pantone color in pdfwrite"<br> +<br> + When converting to a specified colour space, if we encounter a DeviceN<br> + or Separation space, we leave the spot inks in place but change the<br> + alternate space to the defined colour conversion space, and generate a<br> + new tint transform which approximates the original colours.<br> +<br> + However there was a logical error in the code, which only became<br> + apparent if TransferFunctionInfo was set to something other than 'Apply'<br> +<br> + Normally this doesn't happen, but commit<br> + 2e68cc460dbe349f68b81082ff7344db48eb4820 changed the behvaiour when<br> + we are doing colour conversion to prevent us trying to apply a transfer<br> + function to a SMask, which we can't do.<br> +<br> + This then exposed the fact that we were not copying the concretized<br> + samples to the client_colour structure, but we were reading them *back*<br> + from the client_colour structure to set the low and high values in the<br> + generated tint transform function.<br> +<br> + The solution is to copy the components from the concretized colour<br> + outside the if clause testing the TransferFunctionInfo.<br> +<br> + This fix continues to work properly with the file from bug #700052<br> +<br> +devices/vector/gdevpdfg.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-24 12:36:35 -0700 +</strong> +<br>Ray Johnston <ray.johnston@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4367024d102c6363ba7536227790564466ec9ddc">4367024d102c6363ba7536227790564466ec9ddc</a> +<blockquote> +<p> + Fix debug PDF14_OPCODE_NAMES -- PDF14_BEGIN_TRANS_PAGE_GROUP was missing.<br> +<br> +base/gstrans.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-23 14:48:32 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9a8e9c6f7bd45531a1b01eb0d697a6dc48cde2b0">9a8e9c6f7bd45531a1b01eb0d697a6dc48cde2b0</a> +<blockquote> +<p> + Add arm option to clusterpush.pl<br> +<br> +toolbin/localcluster/clusterpush.pl<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-22 12:18:52 -0600 +</strong> +<br>Henry Stiles <henry.stiles@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4de965abeddf859b91937314bc7e86de25acb729">4de965abeddf859b91937314bc7e86de25acb729</a> +<blockquote> +<p> + Bug #701339, fixes total pattern length of 0.<br> +<br> + Fallback to the default path code if the total pattern length is 0.<br> + This can happen because PCL XL represents pattern length elements as<br> + integers not floats.<br> +<br> +devices/vector/gdevpx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-22 19:33:44 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a628e509caf40ddec3d016dd9ff6379f12be7cc1">a628e509caf40ddec3d016dd9ff6379f12be7cc1</a> +<blockquote> +<p> + Ensure pdf14_put_image linebuf is long enough to avoid overrun.<br> +<br> + The assumption is that we can write in 32byte lumps, so we may<br> + overrun the actual amount we need by 28 bytes. Allow for this.<br> +<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-21 16:26:28 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4d8b6c57ef7272d41fb389a4dc9546f078ba3b2d">4d8b6c57ef7272d41fb389a4dc9546f078ba3b2d</a> +<blockquote> +<p> + Rework CAL cflags.<br> +<br> + Cope with building for machines that have SSE4.2, but not AVX2,<br> + that crash on SSE4.2 code compiled with the -mavx2 flag.<br> +<br> +Makefile.in<br> +base/cal.mak<br> +configure.ac<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-22 13:07:59 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=909a87a15b5f8fede1f6bfeac2005327a7ca1601">909a87a15b5f8fede1f6bfeac2005327a7ca1601</a> +<blockquote> +<p> + Permit extra widths on space glyphs (PDF Tw value) even for xyshow<br> +<br> + For the benefit of the pdfi interpreter. With the PDF in PostScript<br> + current interpreter, we apply Widths using a cshow procedure. The pdfi<br> + interpreter instead uses the x_widths and y_widths arrays, intended for<br> + use with the PostScript xyshow operator instead.<br> +<br> + However, the existing code doesn't add the extra width to space glyphs<br> + if we have TEXT_REPLACE_WIDTHS set (ie an xyshow).<br> +<br> + Here we move the code for the additional width out of the 'else'<br> + clause in show_move() so that we always have the value available. We<br> + then apply the dx and/or dy values in both cases.<br> +<br> + We also need to relax the 'invalid' checking which is performed at a<br> + higher level in the code (gx_device_text_begin) because this combination<br> + is explicitly barred there and returns an error.<br> +<br> +base/gstext.h<br> +base/gxchar.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-20 11:34:46 -0700 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=239d9035a011c212b015951bb2d75114ba11bee0">239d9035a011c212b015951bb2d75114ba11bee0</a> +<blockquote> +<p> + Add cal operation to clusterpush.pl<br> +<br> +toolbin/localcluster/clusterpush.pl<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-20 19:34:00 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0d4dcb839b679a01f38aac2156c2bb87a819b0d4">0d4dcb839b679a01f38aac2156c2bb87a819b0d4</a> +<blockquote> +<p> + Squash warnings in CAL build.<br> +<br> +base/gxblend.c<br> +base/gximono.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-18 15:47:54 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e5faf407dcb7c9679537313cebd55a747098f6f8">e5faf407dcb7c9679537313cebd55a747098f6f8</a> +<blockquote> +<p> + Bug 701296: Fix Interpolation in Indexed spaces with UseFastColor<br> +<br> + The get_color_handler logic was being called with pcs = Indexed, and<br> + so doing pcs = pcs->base_space. Then it was checking that pcs == the<br> + concrete space, seeing that it was, and deciding it could then use<br> + the device colors direct. The problem is that pcs->base_space is a<br> + greyscale space, so when running to (say) an rgb output, we have the<br> + wrong color data.<br> +<br> + We now check for the number of components being as we expect, and<br> + for the space being one of our 'default' ones before choosing to<br> + take the 'fast' route.<br> +<br> +base/gsicc_manage.c<br> +base/gsicc_manage.h<br> +base/gxiscale.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-17 10:25:45 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c0e588f679fca92d92045049fd60846b57da899c">c0e588f679fca92d92045049fd60846b57da899c</a> +<blockquote> +<p> + Fix crash when RAW_PATTERN_DUMP is enabled<br> +<br> + RAW_PATTERN_DUMP is used to help debug pattern issues.<br> + Crash introduced when changes were made to file i/o.<br> + Easy to overlook since this is rarely enabled.<br> +<br> +base/gxpcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2018-07-26 14:35:48 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c7499c426c0307880e9a34a577492d99a976c15b">c7499c426c0307880e9a34a577492d99a976c15b</a> +<blockquote> +<p> + Introduce CAL based transparency accelerations.<br> +<br> + Authored by Michael Vrhel.<br> +<br> +base/cal.mak<br> +base/gdevp14.c<br> +base/gdevp14.h<br> +base/gstrans.c<br> +base/gxblend.c<br> +base/gxblend.h<br> +base/gxblend1.c<br> +base/lib.mak<br> +<p> +</blockquote> +<hr> +<p><strong>2018-07-03 11:36:07 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2533344c1bad749e81c3cef91e770ba4ea5a1a1d">2533344c1bad749e81c3cef91e770ba4ea5a1a1d</a> +<blockquote> +<p> + Introduce CAL based SSE4.2 and AVX2 optimisations.<br> +<br> + Authored by Michael Vrhel.<br> +<br> +base/cal.mak<br> +base/gsicc_lcms2mt.c<br> +base/gxicolor.c<br> +base/lib.mak<br> +psi/msvc.mak<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-17 07:14:21 -0700 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2682485aefb808e5dca7191b980aa83880821dcc">2682485aefb808e5dca7191b980aa83880821dcc</a> +<blockquote> +<p> + Update configure for CAL to spot AVX2 as well.<br> +<br> +configure.ac<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-16 12:04:04 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=58d1db5850d470856f8c83af9a573b9c5c18e519">58d1db5850d470856f8c83af9a573b9c5c18e519</a> +<blockquote> +<p> + Move cal_context into gs_lib_ctx core.<br> +<br> + This avoids us having to repeatedly init/fin the CAL lib.<br> +<br> +base/gdevdrop.c<br> +base/gslibctx.c<br> +base/gslibctx.h<br> +base/gxicolor.c<br> +base/gxidata.c<br> +base/gximage.h<br> +base/gximono.c<br> +base/lib.mak<br> +base/siscale_cal.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-17 10:19:47 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=47cd6503f34921c840df7c96faa9d957603521e7">47cd6503f34921c840df7c96faa9d957603521e7</a> +<blockquote> +<p> + Bug 701323: Skip oversize TIFF checks in BigTIFF mode.<br> +<br> + If we have -dUseBigTIFF, then we don't need to check that<br> + we don't exceed 4Gig.<br> +<br> + This appears to work, but I don't have any code that will<br> + actually load and show me a >4Gig TIFF!<br> +<br> +devices/gdevtsep.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-15 18:43:04 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=efce71ac4d500231296d1c84f62077666e0966a1">efce71ac4d500231296d1c84f62077666e0966a1</a> +<blockquote> +<p> + Fix SEGV seen in saved-pages-test run.<br> +<br> + The following job:<br> +<br> + membin/gs -Ilib -sOutputFile=out.%04d.psd --saved-pages-test<br> + -dMaxBitmap=10000 -sDEVICE=psdrgb -r300 -Z: -sDEFAULTPAPERSIZE=letter<br> + -dNOPAUSE -dBATCH -K2000000 -dClusterJob -dJOBSERVER<br> + /home/regression/cluster/tests_private/comparefiles/Bug691425.pdf<br> +<br> + SEGVs due to a buffer overrun.<br> +<br> + We are attempting to copy a list of up to GX_DEVICE_MAX_SEPARATIONS<br> + spot colors for the page into a list that's only GX_SOFT_MAX_SPOTS<br> + long.<br> +<br> + We just extend the storage here to cope.<br> +<br> +base/gxclist.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-15 11:50:27 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=105891fadfa649a7b0e3196cc6b0a9865fbf3cac">105891fadfa649a7b0e3196cc6b0a9865fbf3cac</a> +<blockquote> +<p> + Fix SEGV seen in -dUseCIEColor testing.<br> +<br> + The following test fails with a SEGV in overnight testing:<br> +<br> + tests_private/ps/ps3cet/30-07.PS.psdcmyk.300.1<br> +<br> + I can reproduce the problem with this call:<br> +<br> + membin/gs -Ilib -sOutputFile=out.%d.psd -dUseCIEColor -dMaxBitmap=10000<br> + -sDEVICE=psdcmyk -r300 -Z: -sDEFAULTPAPERSIZE=letter -dNOPAUSE -dBATCH<br> + -K2000000 -dClusterJob -dJOBSERVER -dCETMODE %rom%Resource/Init/gs_cet.ps<br> + tests_private/ps/ps3cet/30-07.PS<br> +<br> + (with a hacked version of Memento so that blocks aren't all put into<br> + their own chunk).<br> +<br> + The problem is that when a shading is built it contains a set of<br> + params, one of which is a reference to the cie_joint_caches<br> + structure. This structure is held in a chunk of memory allocated<br> + from pgs->memory. This entire chunk of memory goes away when an<br> + l2restore happens. The built shading, however, is referenced by<br> + a PS object that can (and does) outlive this.<br> +<br> + When a gc happens, it follows the pointer as part of the enumeration<br> + and crashes due to it having been freed already.<br> +<br> + The fix implemented here, is to add a new graphics lib entrypoint<br> + that returns a reference to a copy of the current caches, allocated<br> + in a given memory space; we use that to get a reference to the<br> + caches in the same memory space (and hence with the same lifespan<br> + as) the shading.<br> +<br> +base/gscie.c<br> +base/gscie.h<br> +psi/zshade.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-12 16:53:58 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7e9df44328a8a6796a83331a4ab5f9b31091a02c">7e9df44328a8a6796a83331a4ab5f9b31091a02c</a> +<blockquote> +<p> + Fix SEGV with psdcmykog device and files with > 7 spots.<br> +<br> + Example invocation:<br> +<br> + membin/gs -Ilib -sOutputFile=out.%d.psd -dMaxBitmap=10000<br> + -sDEVICE=psdcmykog -r600 -Z: -sDEFAULTPAPERSIZE=letter<br> + -dNOPAUSE -dBATCH -K2000000 -dClusterJob -dJOBSERVER<br> + ./tests_private/comparefiles/Bug693541.pdf<br> +<br> + The PDF14 buffers are set up to have dev->color_info.num_components<br> + planes. When these buffers are written into, components 0 to num_spots-1<br> + inclusive are written. If num_spots > num_components, we overwrite<br> + data.<br> +<br> + Devices such as psdcmyk expand num_components to accomodate the<br> + number of spots found on the page. Devices such as psdcmykog<br> + do not; they stick with the number of spots they know about to<br> + start with (i.e. 2).<br> +<br> + Accordingly, if we run a file through with (say) 11 spots on the<br> + page, with a psdcmykog device, the pdf14 device is setup with<br> + num_comps = 7 (6+alpha), but the number of spots is taken as<br> + the number of spots on the page (11), and thus we have memory<br> + overwrites.<br> +<br> + The fix attempted here is to set the number of spots to be<br> + num_comps - number_of_standard_comps.<br> +<br> +base/gdevp14.c<br> +base/gdevp14.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-03 20:24:24 +0100 +</strong> +<br>Shailesh Mistry <shailesh.mistry@hotmail.co.uk><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6b0aab1de02cfc44515ff05f70be066bcac7f504">6b0aab1de02cfc44515ff05f70be066bcac7f504</a> +<blockquote> +<p> + Bug 697545 : Prevent memory leaks in transfer_raster_row.<br> +<br> + Prevent several memory leaks in transfer_raster_row by releasing graphic state.<br> +<br> + Error created using :-<br> + MEMENTO_FAILAT=15010 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.0670<br> +<br> +pcl/pcl/rtraster.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-10 14:19:23 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3bce47c5094c4e200d2200ebd1b081a4dd943215">3bce47c5094c4e200d2200ebd1b081a4dd943215</a> +<blockquote> +<p> + Fix CAL halftoning crash due to unaligned data buffer.<br> +<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-09 14:00:36 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0c6f6eb9bd630d594aae0ef7b58aa75253bf52ed">0c6f6eb9bd630d594aae0ef7b58aa75253bf52ed</a> +<blockquote> +<p> + Reference count image colorspaces in XPS.<br> +<br> + This avoids leaks.<br> +<br> +xps/xpsanalyze.c<br> +xps/xpscolor.c<br> +xps/xpsglyphs.c<br> +xps/xpsgradient.c<br> +xps/xpsimage.c<br> +xps/xpsjpeg.c<br> +xps/xpsjxr.c<br> +xps/xpspath.c<br> +xps/xpspng.c<br> +xps/xpstiff.c<br> +xps/xpstop.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 19:40:28 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ab4cea734dca75cde0ad5d39ad2964c9343e8c91">ab4cea734dca75cde0ad5d39ad2964c9343e8c91</a> +<blockquote> +<p> + XPS: Avoid leaking scanline buffer on jpeg decompression.<br> +<br> +xps/xpsjpeg.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 11:33:55 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5c1311ed4dbfb159c9b2304c26b9311834a72bd4">5c1311ed4dbfb159c9b2304c26b9311834a72bd4</a> +<blockquote> +<p> + Remove a couple of macros<br> +<br> +base/gxchar.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 19:20:18 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a116672f813da107719df28057b624ce434e163c">a116672f813da107719df28057b624ce434e163c</a> +<blockquote> +<p> + Fix leak of buffer from scaler.<br> +<br> + This was being hidden by gc, but shows up in xps.<br> +<br> +base/siscale.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 17:30:01 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=23f28069c8b342cc03de65d8b90029a4b3548010">23f28069c8b342cc03de65d8b90029a4b3548010</a> +<blockquote> +<p> + Really fix CAL makeflags for NEON and SSE.<br> +<br> +Makefile.in<br> +base/cal.mak<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 17:29:40 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c0d136b659b6e54017f57877068206bee62e1fa1">c0d136b659b6e54017f57877068206bee62e1fa1</a> +<blockquote> +<p> + Fix typo in PRI definitions.<br> +<br> +base/stdint_.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 16:49:17 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f0c043ead481dd780c916ddd088baf7abe2a2665">f0c043ead481dd780c916ddd088baf7abe2a2665</a> +<blockquote> +<p> + pdfwrite - fix a memory leak<br> +<br> + pcs is a local variable and when it goes out of scope if it still holds<br> + a reference to the colour space, it will leak.<br> +<br> +devices/vector/gdevpdfb.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 16:38:09 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a77d1aef180a2dce12cefc039f7fc3dffd69af98">a77d1aef180a2dce12cefc039f7fc3dffd69af98</a> +<blockquote> +<p> + Fix CAL NEON detection.<br> +<br> +configure.ac<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 15:46:55 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c454bf4c1e6eb6d64508234dbdd6f29ceea184c3">c454bf4c1e6eb6d64508234dbdd6f29ceea184c3</a> +<blockquote> +<p> + Bug 701284: Fix more path leakages, this time in pdf14.<br> +<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-08 14:58:36 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0ca58b97aa19d25ede275cc6447dc32815205263">0ca58b97aa19d25ede275cc6447dc32815205263</a> +<blockquote> +<p> + Bug 701284: Fix clipping path memory leaks<br> +<br> +base/gxclrast.c<br> +base/gxcpath.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-06 18:34:47 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9d410dc41277401d48f4dd94dd50391c4a4c79b0">9d410dc41277401d48f4dd94dd50391c4a4c79b0</a> +<blockquote> +<p> + Fix CAL builds to pass appropriate compiler flags<br> +<br> +Makefile.in<br> +configure.ac<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-05 19:36:34 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c734f19d7780cac16b89ced9924ad18bf1c1b380">c734f19d7780cac16b89ced9924ad18bf1c1b380</a> +<blockquote> +<p> + Fix memory leak in pdf14_tile_pattern_fill in non-GC languages.<br> +<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-05 19:35:58 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d181151975f0ee13162cc03865c0cc5f58931823">d181151975f0ee13162cc03865c0cc5f58931823</a> +<blockquote> +<p> + Fix memory leaks seen in XPS; pattern cache and start_part.<br> +<br> +xps/xpstop.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-05 19:35:28 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f19453e0f1ced6eb0273f4eabc4e618553c49925">f19453e0f1ced6eb0273f4eabc4e618553c49925</a> +<blockquote> +<p> + xps_free_font wasn't freeing font->data causing leaks.<br> +<br> +xps/xpsfont.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-05 19:34:56 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e05305f8d8e6222250f18daf9b437b7faee8ebee">e05305f8d8e6222250f18daf9b437b7faee8ebee</a> +<blockquote> +<p> + Destructors should cope with NULL.<br> +<br> +base/gxpcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-04 18:52:08 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dd2bd7b4ca1886a4f3c58afbdacbb93831c57e1b">dd2bd7b4ca1886a4f3c58afbdacbb93831c57e1b</a> +<blockquote> +<p> + Bug 701284: Fix leak of pdf14device in xps.<br> +<br> + The pdf14device is created and then "retained". This is required<br> + for gs, because postscript can call "currentdevice" and get a<br> + non reference counted pointer to a device. It is cleared up<br> + correctly because of gc.<br> +<br> + Other languages have no gc, and so leak. The fix is to enable<br> + those languages to get the pdf14device "unretained". We add an<br> + graphics lib call to allow this to happen.<br> +<br> + Transparent Patterns also create pdf14devices, which are again<br> + retained, despite not needing to be. In gs this causes no problems<br> + as they are cleared by the restore, but in other languages they<br> + leak. We make them unretained here, with no ill effects.<br> +<br> +base/gstrans.c<br> +base/gstrans.h<br> +base/gxpcmap.c<br> +psi/zpcolor.c<br> +psi/ztrans.c<br> +xps/xpspage.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-04 08:47:15 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=47a4fab32690cd2f0aba92f37fc7f03b4069460a">47a4fab32690cd2f0aba92f37fc7f03b4069460a</a> +<blockquote> +<p> + Bug 701288: Handle SEAC ligature glyph metrics correctly.<br> +<br> + As originally intended, a Type 1 SEAC charstring would be used for an accented<br> + glyph (like an a-caron, or u-umlaut) where the advance with of the SEAC glyph<br> + is the same as that of the 'base' glyph ('a' or 'u').<br> +<br> + It this case, it is not uncommon for the SEAC to skip using an (H)SBW op code<br> + and rely on the one from the base glyph.<br> +<br> + But out of spec fonts also use SEAC glyphs ligature glyphs (like 'oe' or 'fi'),<br> + and in those cases the overall advance width is greater than that of the 'base'<br> + glyph.<br> +<br> + In this case, we have to allow for the SEAC glyph having included an (H)SBW and<br> + if it has, retain those values, rather than those from the base glyph.<br> +<br> +freetype/src/psaux/psintrp.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-02 17:15:12 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=491a1637f11c84ad47d83d35eba510ac6d0c47f0">491a1637f11c84ad47d83d35eba510ac6d0c47f0</a> +<blockquote> +<p> + Move to size_t in allocations.<br> +<br> +base/gsalloc.c<br> +base/gsalloc.h<br> +base/gsmalloc.c<br> +base/gsmalloc.h<br> +base/gsmchunk.c<br> +base/gsmdebug.h<br> +base/gsmemory.c<br> +base/gsmemory.h<br> +base/gsmemret.c<br> +base/gsnogc.c<br> +base/gsstype.h<br> +base/gxalloc.h<br> +base/gxobj.h<br> +base/mkromfs.c<br> +psi/ilocate.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-03 18:16:25 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=25fbeb3e1f4ba5ca7ecafd7a24b7be4079113e7c">25fbeb3e1f4ba5ca7ecafd7a24b7be4079113e7c</a> +<blockquote> +<p> + Squash warning in compile time assert.<br> +<br> +psi/iapi.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-03 18:01:01 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7dfee126567be1859f4ca1637c256b4179a571b8">7dfee126567be1859f4ca1637c256b4179a571b8</a> +<blockquote> +<p> + Fix missing const with fs_file_open_printer.<br> +<br> +base/gslibctx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-03 18:00:28 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=378fd9840e957c3a160665483cc537d6f6e860bf">378fd9840e957c3a160665483cc537d6f6e860bf</a> +<blockquote> +<p> + Squash some build warnings with debug prints.<br> +<br> +base/gsicc_cache.c<br> +base/gsicc_profilecache.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-03 15:39:15 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e3dd119d53361d09fa30ca13cce4a97869ba0f8d">e3dd119d53361d09fa30ca13cce4a97869ba0f8d</a> +<blockquote> +<p> + Add printf format specifier macros for size_t.<br> +<br> + Sadly, it is not enough to have definitions that match<br> + the sizes; gcc will give a warning if the types don't match.<br> +<br> +base/stdint_.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-03 15:23:46 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=761a8b513a28a9c4f4f1e83150556e7407f0d74a">761a8b513a28a9c4f4f1e83150556e7407f0d74a</a> +<blockquote> +<p> + Add size_t definitions to genarch.<br> +<br> +arch/windows-arm-msvc.h<br> +arch/windows-x64-msvc.h<br> +arch/windows-x86-msvc.h<br> +base/genarch.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-27 16:48:06 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d306e93d487a6539804c6343986bcbca2ecc37a8">d306e93d487a6539804c6343986bcbca2ecc37a8</a> +<blockquote> +<p> + Rework ROP transparency<br> +<br> + Rework ROP behaviour with transparency based upon the results<br> + from roptest.pxl seen on an HP printer.<br> +<br> + The old style ROP transparency code used to treat white pixels<br> + as special. The new style code does everything in boolean logic<br> + by modifying the ROP that is used when S or T pixels are set to<br> + be transparent.<br> +<br> + This enables us to rip out several cases from the ROP<br> + processing loops, as we never need to check for transparent<br> + pixel values anymore.<br> +<br> +base/gdevdrop.c<br> +base/gdevmpla.c<br> +base/gdevmr1.c<br> +base/gdevmr2n.c<br> +base/gdevmr8n.c<br> +base/gdevmrop.h<br> +base/gdevplnx.c<br> +base/gsroprun.c<br> +base/gsroprun24.h<br> +base/gsroprun8.h<br> +base/gsropt.h<br> +base/gxdcolor.c<br> +base/gxipixel.c<br> +devices/vector/gdevpdfi.c<br> +devices/vector/gdevpx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-26 18:51:31 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=054f4df9b5f8bb09c252841f0c3256b9adc60f0a">054f4df9b5f8bb09c252841f0c3256b9adc60f0a</a> +<blockquote> +<p> + Add another couple of SSE ROP cases.<br> +<br> +base/gsroprun.c<br> +base/gsroprun8.h<br> +base/gsropt.h<br> +<p> +</blockquote> +<hr> +<p><strong>2018-01-11 17:57:29 +0000 +</strong> +<br>Robin Watts <robin.watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=82e2843149b32e61cfde7861ac67a51014538f4f">82e2843149b32e61cfde7861ac67a51014538f4f</a> +<blockquote> +<p> + ROP optimisation: Fold 24bpp ROPs down to 8 bit where possible.<br> +<br> + This increases line length.<br> +<br> +base/gsroprun.c<br> +base/gsroprun8.h<br> +base/gsropt.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-02 17:29:54 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=470897e484fb0bfaa8553e0ccd5b9db91eda008b">470897e484fb0bfaa8553e0ccd5b9db91eda008b</a> +<blockquote> +<p> + Avoid warning due to casting int to double.<br> +<br> + Use size_t properly, and no call to abs is required.<br> +<br> +devices/vector/gdevpdfe.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-02 17:14:33 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6c986cd9f93008992344d2cd5be224af13e1c980">6c986cd9f93008992344d2cd5be224af13e1c980</a> +<blockquote> +<p> + Squish an annoying implicit cast warning.<br> +<br> + Do it explicitly.<br> +<br> +base/gsicc_cache.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-02 17:13:48 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=45e765e59a45b46dcb05e8c729689a7c0574a48c">45e765e59a45b46dcb05e8c729689a7c0574a48c</a> +<blockquote> +<p> + Fix some warnings caused by the gs FS api commit.<br> +<br> +base/gp.h<br> +base/gp_dvx.c<br> +base/gp_msprn.c<br> +base/gp_mswin.c<br> +base/gp_os2.c<br> +base/gp_os2.h<br> +base/gp_os9.c<br> +base/gp_unix.c<br> +base/gp_winfs2.c<br> +base/gslibctx.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-01 21:31:03 +0100 +</strong> +<br>Shailesh Mistry <shailesh.mistry@hotmail.co.uk><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f209fb3a0f50cd0a9974d8627a4ac7f358f60c8a">f209fb3a0f50cd0a9974d8627a4ac7f358f60c8a</a> +<blockquote> +<p> + Bug 697545 : Prevent SEGV in check_pattern_rendering.<br> +<br> + Prevent SEGV by checking for check_pattern_rendering being called with NULL pattern.<br> +<br> + Error created using :-<br> + MEMENTO_FAILAT=16764 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.0825<br> +<br> +pcl/pcl/pcpatrn.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-01 21:08:30 +0100 +</strong> +<br>Shailesh Mistry <shailesh.mistry@hotmail.co.uk><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e6c50c878d622974e7bb2438327e5363b9419875">e6c50c878d622974e7bb2438327e5363b9419875</a> +<blockquote> +<p> + Bug 697545 : Prevent SEGV due to double freeing.<br> +<br> + On error pl_dict_put now consumes the new value so these extra calls<br> + to free memory are no longer needed.<br> +<br> + Error created using :-<br> + MEMENTO_FAILAT=1987 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.0825<br> +<br> +pcl/pcl/pcsymbol.c<br> +pcl/pl/pllfont.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-02 15:36:07 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5ef3a531d00715c2b8bcfd38401515d4f60bfec5">5ef3a531d00715c2b8bcfd38401515d4f60bfec5</a> +<blockquote> +<p> + Rejig order of operations from commit 47b1b7f971a76<br> +<br> + I'd forgotten that setcolorspace would blow away the current color, so we need<br> + to get two sets of current color values, before setting the fill and stroke<br> + color spaces, and then setting the file and stroke colors.<br> +<br> +Resource/Init/pdf_ops.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-24 13:23:34 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=93fc44b3426cd771ee0a9358da805cd2ac93a649">93fc44b3426cd771ee0a9358da805cd2ac93a649</a> +<blockquote> +<p> + Fix gsapi exposure through the DLL.<br> +<br> + Lots of functions that should have been exposed, weren't.<br> +<br> +psi/dpmain.c<br> +psi/dwdll.c<br> +psi/dwdll.h<br> +psi/gsdll32.def<br> +psi/gsdll32metro.def<br> +psi/gsdll64.def<br> +psi/gsdll64metro.def<br> +psi/gsdllARM32metro.def<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-19 18:43:33 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e6966d10ec319a25ad91e4aa53a783edede7b62b">e6966d10ec319a25ad91e4aa53a783edede7b62b</a> +<blockquote> +<p> + Add gsapi call to introduce new 'Filing Systems' to gs.<br> +<br> + Still to do - Example?<br> +<br> +base/gdevpipe.c<br> +base/gp.h<br> +base/gp_mshdl.c<br> +base/gp_msprn.c<br> +base/gp_os2pr.c<br> +base/gpmisc.c<br> +base/gsdevice.c<br> +base/gslibctx.c<br> +base/gslibctx.h<br> +base/stdpre.h<br> +doc/API.htm<br> +pcl/pl/plapi.c<br> +pcl/pl/plapi.h<br> +psi/iapi.c<br> +psi/iapi.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-02 11:12:04 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e585a31732e966f1508b64f04cacbaf8ede65c68">e585a31732e966f1508b64f04cacbaf8ede65c68</a> +<blockquote> +<p> + Fix an out-of-date comment about devices in gstates<br> +<br> +base/gsstate.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-02 11:06:03 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=47b1b7f971a760ff311bf3c3d8a02e2a2d53ac7d">47b1b7f971a760ff311bf3c3d8a02e2a2d53ac7d</a> +<blockquote> +<p> + PDF interp: use initgraphics for initial color(space)<br> +<br> + Previously, the PDF interpreter explicitly set the initial color and color space<br> + for each page ('0 g 0 G') despite initgraphics being called, and also setting<br> + the color(space)s correctly.<br> +<br> + Unfortunately, removing that completely causes problems with pdfwrite's<br> + transparency handling, so we reuse the already installed values in place<br> + of explicitly setting absolute values.<br> +<br> + This should allow for preview-latex's (slightly hacky) method of custom coloring<br> + 'special' PDFs for previewing.<br> +<br> +Resource/Init/pdf_ops.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-25 10:43:30 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=94cc50cf64e0899c5d415e6ac1e6ea725fc13502">94cc50cf64e0899c5d415e6ac1e6ea725fc13502</a> +<blockquote> +<p> + Fix DELAYBIND<br> +<br> + We now undefine a *lot* of non-standard/internal operators (and other things) as<br> + we go, and often we rely on bind to ensure that the names are replaced with the<br> + operator objects rather than names.<br> +<br> + This falls over when DELAYBIND is in force, and the call to .bindnow happens<br> + *after* the undefining occurs.<br> +<br> + To solve this, all the undefining happens through a procedure: .addtoundeflist.<br> +<br> + Under normal operation, that simply undefines as we go, and things work the same<br> + as always.<br> +<br> + Under DELAYBIND .addtoundeflist accumulates a list of names to undefine, and the<br> + dictionaries from where they should be removed, and on the .bindnow call, then<br> + .applyundeflist is called which rattles through the lists removing the names<br> + from the dictionaries.<br> +<br> +Resource/Init/gs_btokn.ps<br> +Resource/Init/gs_cet.ps<br> +Resource/Init/gs_cidfn.ps<br> +Resource/Init/gs_dps2.ps<br> +Resource/Init/gs_epsf.ps<br> +Resource/Init/gs_fapi.ps<br> +Resource/Init/gs_fonts.ps<br> +Resource/Init/gs_img.ps<br> +Resource/Init/gs_init.ps<br> +Resource/Init/gs_lev2.ps<br> +Resource/Init/gs_ll3.ps<br> +Resource/Init/gs_res.ps<br> +Resource/Init/gs_resmp.ps<br> +Resource/Init/gs_setpd.ps<br> +Resource/Init/gs_ttf.ps<br> +Resource/Init/pdf_main.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-02 10:36:18 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=871b8d8d5a26205a7a3c05ea9abf060a272fd6fb">871b8d8d5a26205a7a3c05ea9abf060a272fd6fb</a> +<blockquote> +<p> + Tweak path access control logic<br> +<br> + Correctly handle the difference between permitted paths of the forms:<br> + 'path', 'path/' and 'path/*'.<br> +<br> + The previous code effectively treated 'path/' and 'path/*' the same.<br> +<br> +base/gpmisc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-20 12:24:04 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1b83ee86dc775a9d7972d94041e226893983b264">1b83ee86dc775a9d7972d94041e226893983b264</a> +<blockquote> +<p> + File access control: handle non-null terminated paths<br> +<br> + Add an access control checking API call that can take a non-null terminated<br> + string (i.e. takes a string and length).<br> +<br> + The reason being the strings returned from gp_enumerate_files* are not null<br> + terminated, and we need to filter them by permissions.<br> +<br> +base/gp.h<br> +base/gpmisc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-07-01 15:27:05 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=56158b2c2d8fb9bd5e5bbb9be645fb88231c4898">56158b2c2d8fb9bd5e5bbb9be645fb88231c4898</a> +<blockquote> +<p> + Fix buffer overrun in mswinpr2 device<br> +<br> + Bug #701281 "ACTIONABLE_HEAP_CORRUPTION when try print with -sOutputFile"<br> +<br> + The mswinprs2 device uses the very old 16-bit GetProfileStringW() API<br> + call to get the 'Devices' in order to look for a specified printer.<br> +<br> + The code however assumes that the buffer length passed is in bytes, and<br> + in fact it should be in wchar_. This means that a sufficiently large<br> + Devices section could overrun the buffer, as it thinks there are more<br> + wchar_t available than there are.<br> +<br> + in addition, if the section is very large we could run out of space in<br> + the string altogether, and then would be unable to find the designated<br> + printer.<br> +<br> + This commit alters the code so that the length passed to GetProfileStringW<br> + is in wchar_t and also examines the returned length. If the returned<br> + length indicates possible truncation of the return, then we free the<br> + buffer, increase its size by 4Kb and try again. Repeatedly until we<br> + either exhaust memory or get a large enough buffer.<br> +<br> +devices/gdevwpr2.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-18 21:21:10 +0100 +</strong> +<br>Shailesh Mistry <shailesh.mistry@hotmail.co.uk><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=90ae60d1669ebf01228d05cdb58c248a2f971d07">90ae60d1669ebf01228d05cdb58c248a2f971d07</a> +<blockquote> +<p> + Bug 697545 : Prevent memory leaks in pcl_define_symbol_set.<br> +<br> + Cleanup symbol set for all error returns.<br> +<br> + Error created using :-<br> + MEMENTO_FAILAT=15206 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.0460<br> +<br> +pcl/pcl/pcsymbol.c<br> +pcl/pl/pldict.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-25 15:28:48 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=12ffa0f40b6849d97c1e4dc49287bca56f513f7f">12ffa0f40b6849d97c1e4dc49287bca56f513f7f</a> +<blockquote> +<p> + pdfwrite - fix an error path<br> +<br> + This turned up while working on the PDF interpreter in C. Previously we<br> + had no examples which exercised this error pathway, because it was only<br> + used by PCL and none of our PCL examples threw an error here.<br> +<br> + If we've started accumulating a CharProc, then we have started a pdf<br> + substream. If we get an error, then we need to terminate that substream<br> + before returning (the caller can't know that the substream was begun).<br> +<br> +devices/vector/gdevpdtt.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-11 19:04:21 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f59b4dc4f512839fd73718de535da99c6085da3">4f59b4dc4f512839fd73718de535da99c6085da3</a> +<blockquote> +<p> + First steps for using SSE for ROPs.<br> +<br> +base/gsroprun.c<br> +base/gsroprun8.h<br> +base/gsropt.h<br> +<p> +</blockquote> +<hr> +<p><strong>2018-04-19 12:45:14 +0100 +</strong> +<br>Robin Watts <robin.watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=140a9359f3cc6739c7caf0796430bc3112cb3cd5">140a9359f3cc6739c7caf0796430bc3112cb3cd5</a> +<blockquote> +<p> + Initial import of CAL.<br> +<br> +Makefile.in<br> +base/cal.mak<br> +base/gdevdrop.c<br> +base/gs.mak<br> +base/gxicolor.c<br> +base/gxidata.c<br> +base/gximage.h<br> +base/gximono.c<br> +base/gxiscale.c<br> +base/lib.mak<br> +base/siscale_cal.c<br> +base/sisparam.h<br> +base/unix-gcc.mak<br> +base/winlib.mak<br> +configure.ac<br> +psi/msvc.mak<br> +windows/ghostscript.vcproj<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-24 16:35:31 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dd75f619d0ae98e21e30ad89d2e7d2cd4277cc2e">dd75f619d0ae98e21e30ad89d2e7d2cd4277cc2e</a> +<blockquote> +<p> + Preparatory work for the PDF interpreter in C<br> +<br> + Currently the pdfwrite device assumes that a font with FontType 3<br> + (ft_user_defined) *will* require an exit to the interpreter. The<br> + CharProc capture is set up so that this happens in a complicated dance.<br> +<br> + When we have the PDF interpreted in C we do not need to exit to the<br> + interpreter, and so we need to capture the CharProc in the same way we<br> + do for PCL 'user defined' fonts (eg the HPGL stick font and PCL bitmap<br> + fonts).<br> +<br> + Obviously to be able to do this we need to be able to differentiate<br> + between a PostScript type 3 font (or a type 3 font built by the PostScript<br> + PDF interpreter) and a type 3 font built by the C PDF interpreter. So<br> + the first thing we do is add a new ft_PDF_user_defined font tyep.<br> +<br> + Then update the graphics library so that it treats the PDF type 3 font<br> + in exactly the same way as it does a PostScript type 3 font.<br> +<br> + In the pdfwrite device, in general we want to treat a PDF type 3 font<br> + as being the same as a PS type 3.<br> +<br> + Finally, in pdf_text_process() the bulk of the real work. If we have a<br> + ft_PDF_user_defined font, then set 'early_accumulator' which means we<br> + push the accumulator early, because we won't need to exit to the<br> + interpreter. This means that in the 'early_accumulator' branch we need<br> + to account for the possibility that the text operation won't be a<br> + 'TEXT_FROM_CHARS' (it always is for PCL, which is why this didn't need<br> + to be handled before). There was also some bad error handling in here,<br> + we do a gs_gsave() which is undone by a gs_grestore() in comp[ete_charproc()<br> + but if we had an error before that we would not undo the gs_gsave whhich<br> + could lead to ridiculous levels of nested gsaves.<br> +<br> +base/gstext.c<br> +base/gxchar.c<br> +base/gxftype.h<br> +base/gxpaint.c<br> +devices/vector/gdevpdtc.c<br> +devices/vector/gdevpdtd.c<br> +devices/vector/gdevpdte.c<br> +devices/vector/gdevpdtf.c<br> +devices/vector/gdevpdti.c<br> +devices/vector/gdevpdts.c<br> +devices/vector/gdevpdtt.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-22 10:49:31 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9055511a9ca3600ee8680ea2b35b2f31f708bd40">9055511a9ca3600ee8680ea2b35b2f31f708bd40</a> +<blockquote> +<p> + Improve -dFILTERIMAGE<br> +<br> + Previously if we were supplied too much image data, we could read off<br> + the end of the supplied data and consume input that should have been<br> + interpreted.<br> +<br> + This limits the consumption of data so that we don't read more than we<br> + expected.<br> +<br> + NB! We still don't support type 3 images, as that requires us to process<br> + 2 images at once.<br> +<br> +base/gdevoflt.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-19 19:11:43 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f3f5aeb40be1562f05864705b0a04fbccae6fec">4f3f5aeb40be1562f05864705b0a04fbccae6fec</a> +<blockquote> +<p> + Remove unused gsapi functions.<br> +<br> + gsapi_get_device_memory and gsapi_set_device aren't used, so<br> + do away with them.<br> +<br> +psi/dwdll.h<br> +psi/dwnodll.c<br> +psi/gsdll2.def<br> +psi/gsdll32.def<br> +psi/gsdll32metro.def<br> +psi/gsdll64.def<br> +psi/gsdll64metro.def<br> +psi/gsdllARM32metro.def<br> +psi/iapi.c<br> +psi/iapi.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-19 18:43:09 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c1500bb8ed62224e8b372fca76ed8e411cc447d1">c1500bb8ed62224e8b372fca76ed8e411cc447d1</a> +<blockquote> +<p> + More gp_file vs FILE fixes.<br> +<br> +base/gp_vms.c<br> +contrib/pcl3/src/pcl3opts.c<br> +contrib/pscolor/test.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-20 19:22:24 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ae73b49631e657b5ed5c3bf7936febf64a3f8b3c">ae73b49631e657b5ed5c3bf7936febf64a3f8b3c</a> +<blockquote> +<p> + Fix Indexed 'install' procedure<br> +<br> + The Install procedure for Indexed spaces was calling the 'install'<br> + procedure for its base space. This is incorrect. Colour spaces are<br> + supposed to be set from the lowest (most 'base') to the highest. So the<br> + Indexed space's base space should already be set, and installed. Trying<br> + to set it again is a bad thing and can cause Seg Faults.<br> +<br> + However, the PCL interpreter relies on the Indexed space doing this,<br> + contrary to the expected behaviour it does not set the base space before<br> + setting the Indexed space, and relies on the Indexed space to 'install'<br> + the base space.<br> +<br> + Setting the base space caused unexpected (and inexplicable) differences<br> + in halftoned output. I 'suspect' that this is because it sets the three<br> + initial components of pgs->color[0].ccolor, whereas the previous code<br> + only resulted in setting the initial value.<br> +<br> + So instead, call the base space's 'install' procedure directly, this<br> + doesn't set the colour values (which gs_setcolorspace does) and results<br> + in no differences.<br> +<br> + For me this resolves the crashes that were being seen in the 32-bit<br> + builds of Ghostscript and shows no differences.<br> +<br> +base/gscolor2.c<br> +pcl/pcl/pcindxed.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-19 15:14:46 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=108dd018b746d33ad06a7ee863fae56cbeb1fd80">108dd018b746d33ad06a7ee863fae56cbeb1fd80</a> +<blockquote> +<p> + "Fix" contrib and test uses of gp_fopen.<br> +<br> + Here we fix a lot of contrib devices that had been broken by the<br> + changes to gp_file. I believe they all should work OK now.<br> +<br> + One of the routines was calling lib_fopen in an unsupported way; this<br> + can't easily be fixed, so we just call gp_fopen instead now.<br> +<br> + We also "fix" some test code that was calling gp_fopen and then doing<br> + things that we can't easily do with a gp_file *. This code has reverted<br> + to using FILE *'s and fopen - this might cause issues on compilation as<br> + this code is untested, but it's better than compiling to give code that<br> + crashes.<br> +<br> +base/gp_vms.c<br> +contrib/japanese/dviprlib.c<br> +contrib/japanese/dviprlib.h<br> +contrib/japanese/gdevdmpr.c<br> +contrib/pscolor/test.c<br> +devices/vector/gdevtxtw.c<br> +psi/gserver.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-19 12:51:38 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2c6484de7376ce4e24d87f1eb4c6f76360c9b928">2c6484de7376ce4e24d87f1eb4c6f76360c9b928</a> +<blockquote> +<p> + Fix debug code to call gp_fopen correctly.<br> +<br> + These were missed during the conversion to gp_file.<br> +<br> +base/gdevp14.c<br> +base/gsicc_create.c<br> +base/gsicc_lcms2.c<br> +base/gsicc_lcms2mt.c<br> +base/gsicc_manage.c<br> +base/gsicc_manage.h<br> +base/gsroprun.c<br> +base/gxblend.c<br> +base/gxblend.h<br> +base/gxblend1.c<br> +base/gxpcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-19 09:42:10 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b38aad870c573f7cafe99a95c3b931c1dc6cd132">b38aad870c573f7cafe99a95c3b931c1dc6cd132</a> +<blockquote> +<p> + Remove some debug code<br> +<br> +Resource/Init/gs_init.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-18 10:54:47 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d4d7d6948e41c2573b47645191dbb7e3877f0597">d4d7d6948e41c2573b47645191dbb7e3877f0597</a> +<blockquote> +<p> + Fix up some coverity issues, and other warnings<br> +<br> + CIDs: 341120, 341119, 341118, 341117, 341116, 341115, 341114, 341113, 341112,<br> + 341111, 341110, 341109, 341108, 341107, 341106, 341105, 341104, 341103, 341102,<br> + 341101.<br> +<br> + Mostly examples of gp_fseek and sscanf ignoring return values.<br> +<br> +base/gp_unifs.c<br> +base/mkromfs.c<br> +contrib/pcl3/eprn/pagecount.c<br> +contrib/pcl3/src/gdevpcl3.c<br> +contrib/pcl3/src/pclgen.c<br> +contrib/pcl3/src/pclgen.h<br> +devices/gdevdfax.c<br> +devices/gdevpsd.c<br> +devices/vector/gdevpdf.c<br> +devices/vector/gdevxps.c<br> +pcl/pl/pjparse.c<br> +pcl/pl/plmain.c<br> +psi/imainarg.c<br> +psi/iutil.c<br> +xps/xpszip.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-14 09:10:45 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=29da5d218dac7e0975c03a81982fdc33b5eba20d">29da5d218dac7e0975c03a81982fdc33b5eba20d</a> +<blockquote> +<p> + Make sure font Decoding is in the correct VM mode<br> +<br> +Resource/Init/gs_fntem.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-14 09:10:04 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=35b8b94e3ac3cced1b415c92b091c6959240755e">35b8b94e3ac3cced1b415c92b091c6959240755e</a> +<blockquote> +<p> + Remove stray exec and some pointless immediate evaluations<br> +<br> +Resource/Init/gs_fapi.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-14 09:16:53 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=adc94490502a360c3bdf8843888f784d57066c0e">adc94490502a360c3bdf8843888f784d57066c0e</a> +<blockquote> +<p> + PDF interpreter - improve repair of broken PDF files<br> +<br> + If a file had a startxref token which was not followed by any further<br> + actual tokens (eg nothing but % comment lines) then the repair code<br> + failed to account for this, and ended up trying to pop non-existent<br> + objects from the stack.<br> +<br> + This is because the code did not test the result of the 'token' operator<br> + to ensure that a token had been read, it assumed one would be. In this<br> + commit we check the result and, if its 'false' (no token read) we don't<br> + attempt to pop the non-existent token from the stack, but instead follow<br> + the existing error path and resort to scanning the PDF file for the<br> + trailer dictionary.<br> +<br> + In addition to fixing the customer reported file, this also fixes the<br> + existing test suite file<br> +<br> + tests_private/pdf/sumatra/repairing_leaks_object.pdf<br> +<br> +Resource/Init/pdf_rbld.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-12 15:35:11 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8522db03fde6b1b514beed9d66faa839f24ebdc4">8522db03fde6b1b514beed9d66faa839f24ebdc4</a> +<blockquote> +<p> + Make .pdfexectoken not an operator<br> +<br> + In a previously round of security fixes, I made .pdfexectoken an operator. That<br> + turns out to cause problems because we (normally) attempt to recover from errors<br> + in PDF files, so we don't want .pdfexectoken to cleanup the stacks in the event<br> + of an error.<br> +<br> + In addition, the original problem this solved is solved in a more robust way<br> + (executeonly on the transient procedures).<br> +<br> +Resource/Init/pdf_base.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-11 20:29:53 +0200 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=094b9caade51b718a20b8d326fff9e0f93166cd4">094b9caade51b718a20b8d326fff9e0f93166cd4</a> +<blockquote> +<p> + Bug 698777: jbig2dec: Update information in README.<br> +<br> +jbig2dec/README<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-10 17:22:04 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=20a6ddad3cd42796c913ab94583fc0f0e5870281">20a6ddad3cd42796c913ab94583fc0f0e5870281</a> +<blockquote> +<p> + Fix gpdl SAFER operation.<br> +<br> + -sOutputFile=foo was having the pass set as "=foo" due to<br> + me forgetting to increment the pointer. This resulted in<br> + many thousands of errors in the weekly SAFER test.<br> +<br> +pcl/pl/plmain.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-10 16:24:41 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ee8ab38bab473ff1457e7f966b2733f0c829bcb1">ee8ab38bab473ff1457e7f966b2733f0c829bcb1</a> +<blockquote> +<p> + PDF interpreter - don't execute newpath when ending text blocks<br> +<br> + Bug 701178 - "PDF missing two bounding boxes on process"<br> +<br> + The missing rectangles are defind in the content stream between a<br> + number of BT/ET text blocks, and only finally stroked after all the<br> + text has been emitted.<br> +<br> + Because we execute a newpath when ending a text block (to avoid dangling<br> + path elements from text), and prior path elements are lost.<br> +<br> + This commit only executes a newpath when the text rendering mode is one<br> + of the 'clip' modes, as that is handled differently, and we need the<br> + newpath.<br> +<br> + Its a pretty poor way to output the paths, and I suspect that it would<br> + likely run into trouble with the text clipping modes, but since those<br> + aren't used here its hard to tell.<br> +<br> +Resource/Init/pdf_ops.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-07 13:58:25 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8eaa0856399c9b621db17e96c8f7be1e0241ab8b">8eaa0856399c9b621db17e96c8f7be1e0241ab8b</a> +<blockquote> +<p> + Fix AES-256 decryption when using owner key<br> +<br> + The code for computing the decryption key for AES-256 encrypted PDF<br> + files was incorrect. When computing the validation check we correctly<br> + used the owner key if it was supplied, but for computing the actual<br> + decryption key we always treated the supplied password as the user<br> + password.<br> +<br> +psi/zpdf_r6.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-05 09:55:46 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b31fb3c0cd7ab223d870fa1e0fb231d911b19984">b31fb3c0cd7ab223d870fa1e0fb231d911b19984</a> +<blockquote> +<p> + Modify the new gp_file API so that gp_fread etc match fread<br> +<br> + The new gp_fread() and gp_fwrite() have a parameter list which (more or<br> + less) matches the list for the C run-time functions fread() and fwrite()<br> +<br> + However, the return values do not match the returned values from the<br> + C runtime functions. This is because, internally, the gp_file structure<br> + has function pointers which only take 3 parameters instead of 4. This<br> + is handled by multiplying the size of the record by the number of records<br> + to be read/written, and then reading that many bytes.<br> +<br> + Since the underlying functions are (at this time) the C runtime functions<br> + this means that th returned value becomes the number of bytes read<br> + (or written) instead of the number of *records* read/written.<br> +<br> + This commit modifies that internal API so that the gp_file member<br> + functions take 4 parameters (thus matching both gp_fread and fread)<br> + and pass them to the underlying functions. The return value is then<br> + the number of records, as expected.<br> +<br> + Should we ever encounter an implementation which doesn't match the<br> + C runtime fread() we could implement it by multiplying the size by the<br> + count (as was done prior to this commit) and then, assuming the return<br> + value was the number of bytes read, dividing the return value by the<br> + size, in order to retrieve the number of records read.<br> +<br> +base/gp.h<br> +base/gpmisc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-07 12:11:57 +0100 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ee8864ae09ff0017e5503bde1f5b52538759babc">ee8864ae09ff0017e5503bde1f5b52538759babc</a> +<blockquote> +<p> + Ensure that separation CMYK source colors managed<br> +<br> + This is the separation version of the DeviceN commit<br> +<br> + http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=0b9c45fa86f7736e7fec170a135efa83636283ba<br> +<br> +base/gdevp14.c<br> +base/gscsepr.c<br> +base/gsequivc.c<br> +base/gxcmap.c<br> +base/gxcmap.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-01 11:09:05 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d5e123d42718370c144a62ba10a7b715cc88b81a">d5e123d42718370c144a62ba10a7b715cc88b81a</a> +<blockquote> +<p> + Graphics library - match gsaves with grestores<br> +<br> + Auditing as part of the pdfi work, when the graphics library executes<br> + a gs_gsave() it should match it with a gs_grestore(), even in the case<br> + of an error.<br> +<br> + In addition, if gs_setcolorspace failed in image_PaintProc() it would<br> + leak the pattern enumerator. Because this is only called from PCL<br> + the memory is not garbage collected.<br> +<br> +base/gsptype1.c<br> +base/gxchar.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-03 18:28:18 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c9a832653a91ddcdd1220fe9fbbc58839eade4aa">c9a832653a91ddcdd1220fe9fbbc58839eade4aa</a> +<blockquote> +<p> + Fix leak in gs_lib_ctx_fin.<br> +<br> + When freeing gs_lib_ctx, don't remove the mem->gs_lib_ctx pointers<br> + until after we have finished using them. This avoids a leak.<br> +<br> +base/gslibctx.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-06-03 14:19:54 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7b052ff372bbd325676d2e1a57dfd71c33c9f677">7b052ff372bbd325676d2e1a57dfd71c33c9f677</a> +<blockquote> +<p> + Update gpdl with new file access permissions.<br> +<br> + This basically involves duplicating the changes from Chris'<br> + gs commit. Part of this promotes a couple of static functions<br> + to being global ones so both implementations can call them.<br> +<br> +base/gslibctx.c<br> +base/gslibctx.h<br> +pcl/pl/plmain.c<br> +psi/imainarg.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-29 15:56:20 -0700 +</strong> +<br>Ray Johnston <ray.johnston@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=650c49424529fca922519ee9cdf2086eee5cfb70">650c49424529fca922519ee9cdf2086eee5cfb70</a> +<blockquote> +<p> + Fix broken DEBUG build. Add standalone gs_log_error to mkromfs.c<br> +<br> + This function is invoked for DEBUG builds by gs_note_error. We define<br> + an equivalent local version so we don't have to include gsmisc.obj<br> + (as for other utility functions such as outprintf).<br> +<br> +base/mkromfs.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-29 13:20:39 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f5c0159d993418a8900a84e5fd946e83bdaeec73">f5c0159d993418a8900a84e5fd946e83bdaeec73</a> +<blockquote> +<p> + Fix dfaxhigh/low device with new gp_file API.<br> +<br> + Arose in the "all devices" cluster test<br> +<br> +devices/gdevdfax.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-07 11:30:15 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7ecbfda92b4c8dbf6f6c2bf8fc82020a29219eff">7ecbfda92b4c8dbf6f6c2bf8fc82020a29219eff</a> +<blockquote> +<p> + Add use of new file access permissions to PS interp<br> +<br> + (this is a squash of several commits from filesec branch)<br> +<br> + Use errno to indicate invalidfileaccess<br> +<br> + Integrate fontconfig with file access controls<br> +<br> + fontconfig API has a call to retrieve all the directories about which fontconfig<br> + knows, so we can get those, and add them to the paths from which we're permitted<br> + to read.<br> +<br> + Add (most of) the Postscript "managed" paths....<br> +<br> + ...to the access controls.<br> +<br> + GenericResourceDir, ICCProfilesDir (reading) and temporary file directories for<br> + read/write/control.<br> +<br> + Add paths/files from C to the file access controls<br> +<br> + The -I paths, environment variables and build time paths.<br> +<br> + The command line specified output file, permit writing.<br> +<br> + Lastly, the command line specified input file is added to the readable list,<br> + interpreted, and then removed from the list.<br> +<br> + Add the FONTPATH path list to permit read access control list.<br> +<br> + I opted to do this in Postscript because the list is (normally) a colon<br> + separated list of paths, which we split into an array of paths (in Postscript) -<br> + it seems sensible to do this only once, both for storage and permissions.<br> +<br> + Add a non-standard string 'reverse search" operator<br> +<br> + The search operator searches for the first occurrence of a character code in a<br> + string (i.e. searches forwards from the start of the string), 'rsearch' finds<br> + the last instance of a character code (i.e. search backwards from the end of<br> + the string).<br> +<br> + Fix gp_open_scratch_file_rm for access permissions<br> +<br> + i.e. the same as gp_open_scratch_file<br> +<br> + Handle clist file 'rewind' failures<br> +<br> + 'Rewinding' clist files may involved closing and recreating the temporary files,<br> + which conceivably can fail, but the clist procs rewind method was a void<br> + function, so couldn't return an error.<br> +<br> + It now can, and does return an error, and we handle the error.<br> +<br> + Add file permissions support for piped output.<br> +<br> + Paths from Fontmap to PermitReading list<br> +<br> + cidfmap paths, add to PermitReading list<br> +<br> + Add command line options for path access control addition<br> +<br> + --permit-file-read<br> + --permit-file-write<br> + --permit-file-control<br> + --permit-file-all<br> +<br> + They all take a separated list of paths (the usual platform specific ':' or ';'<br> + separator), and to the respective access control lists - the final 'all' option<br> + adds the paths to all the control lists.<br> +<br> + Add file access control to the 'gp_stat' method.<br> +<br> + This is complicated by the need to add the memory allocator context to the<br> + gp_stat parameters. To facilitate this, I've added a gs_memory_t pointer to the<br> + gx_io_device structure, which is set during the io device initialisation at<br> + startup.<br> +<br> + mkromfs: Add dummy gp_stat_impl for Windows - saves quite a bit of pointless<br> + build upheaval<br> +<br> + Add file access protection to file enumeration.<br> +<br> + The low level implementation of Postscript's filenameforall (*_enumerate_files)<br> + needs to also honour file access protection.<br> +<br> + This is has been complicated by requiring a gs_memory_t to be available where<br> + it wasn't previously (in order to access the gs_lib_ctx and the file permissions<br> + lists therein).<br> +<br> + Temp<br> +<br> +Resource/Init/gs_cidfm.ps<br> +Resource/Init/gs_fonts.ps<br> +Resource/Init/gs_init.ps<br> +base/gdevpipe.c<br> +base/gp.h<br> +base/gp_dosfe.c<br> +base/gp_mshdl.c<br> +base/gp_msprn.c<br> +base/gp_mswin.c<br> +base/gp_ntfs.c<br> +base/gp_os2fs.c<br> +base/gp_os2pr.c<br> +base/gp_unifs.c<br> +base/gp_unix.c<br> +base/gp_vms.c<br> +base/gpmisc.c<br> +base/gsiodev.c<br> +base/gsiodevs.c<br> +base/gsiodisk.c<br> +base/gsioram.c<br> +base/gsiorom.c<br> +base/gxclfile.c<br> +base/gxclio.h<br> +base/gxclist.c<br> +base/gxclmem.c<br> +base/gxclread.c<br> +base/gxiodev.h<br> +base/gxp1fill.c<br> +base/lib.mak<br> +base/mkromfs.c<br> +base/stat_.h<br> +pcl/pl/pjparse.c<br> +pcl/pl/pllfont.c<br> +psi/imain.c<br> +psi/imainarg.c<br> +psi/zdevcal.c<br> +psi/zfile.c<br> +psi/ziodev.c<br> +psi/ziodev2.c<br> +psi/ziodevsc.c<br> +psi/zstring.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-07 18:03:00 +0000 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9de16a6637b73e35f79d2d622de403b24e6502f2">9de16a6637b73e35f79d2d622de403b24e6502f2</a> +<blockquote> +<p> + Move FILE * operations behind new gp_file * API.<br> +<br> + (squash of commits from filesec branch)<br> +<br> + Most of this commit is donkeywork conversions of calls from<br> + FILE * -> gp_file *, fwrite -> gp_fwrite etc. Pretty much every<br> + device is touched, along with the clist and parsing code.<br> +<br> + The more interesting changes are within gp.h (where the actual<br> + new API is defined), gpmisc.c (where the basic implementations<br> + live), and the platform specific levels (gp_mswin.c, gp_unifs.c<br> + etc where the platform specific implementations have been<br> + tweaked/renamed).<br> +<br> + File opening path validation<br> +<br> + All file opening routines now call a central routine for<br> + path validation.<br> +<br> + This then consults new entries in gs_lib_ctx to see if validation<br> + is enabled or not. If so, it validates the paths by seeing if<br> + they match.<br> +<br> + Simple C level functions for adding/removing/clearing paths, exposed<br> + through the gsapi level.<br> +<br> + Add 2 postscript operators for path control.<br> +<br> + <name> <string> .addcontrolpath -<br> +<br> + Add the given <string> (path) to the list of paths for<br> + controlset <name>, where <name> can be:<br> + /PermitFileReading<br> + /PermitFileWriting<br> + /PermitFileControl<br> + (Anything else -> rangecheck)<br> +<br> + - .activatepathcontrol -<br> +<br> + Enable path control. At this point PS cannot make any<br> + more changes, and all file access is checked.<br> +<br> +base/gdebug.h<br> +base/gdevdevn.c<br> +base/gdevp14.c<br> +base/gdevpccm.c<br> +base/gdevpccm.h<br> +base/gdevpipe.c<br> +base/gdevprn.c<br> +base/gdevprn.h<br> +base/gdevvec.c<br> +base/gdevvec.h<br> +base/gp.h<br> +base/gp_dosfs.c<br> +base/gp_dvx.c<br> +base/gp_mshdl.c<br> +base/gp_msprn.c<br> +base/gp_mswin.c<br> +base/gp_ntfs.c<br> +base/gp_os2.c<br> +base/gp_os2fs.c<br> +base/gp_os2pr.c<br> +base/gp_os9.c<br> +base/gp_unifs.c<br> +base/gp_unix.c<br> +base/gp_vms.c<br> +base/gp_win32.c<br> +base/gp_winfs.c<br> +base/gp_winfs2.c<br> +base/gpmisc.c<br> +base/gpmisc.h<br> +base/gsargs.c<br> +base/gsargs.h<br> +base/gsdevice.c<br> +base/gsicc_create.c<br> +base/gsicc_lcms2.c<br> +base/gsicc_lcms2mt.c<br> +base/gsicc_manage.c<br> +base/gsinit.c<br> +base/gsiodev.c<br> +base/gsiodevs.c<br> +base/gsiodisk.c<br> +base/gsioram.c<br> +base/gsiorom.c<br> +base/gslib.h<br> +base/gslibctx.c<br> +base/gslibctx.h<br> +base/gsmemory.h<br> +base/gsmisc.c<br> +base/gsroprun.c<br> +base/gstiffio.c<br> +base/gstiffio.h<br> +base/gxblend.c<br> +base/gxblend1.c<br> +base/gxclfile.c<br> +base/gxdevice.h<br> +base/gxiodev.h<br> +base/gxpcmap.c<br> +base/lib.mak<br> +base/msvctail.mak<br> +base/sfxcommon.c<br> +base/sfxfd.c<br> +base/sfxstdio.c<br> +base/stdpre.h<br> +base/stream.h<br> +base/tiff.mak<br> +base/winlib.mak<br> +contrib/contrib.mak<br> +contrib/eplaser/gdevescv.c<br> +contrib/gdevbjc_.c<br> +contrib/gdevbjc_.h<br> +contrib/gdevbjca.c<br> +contrib/gdevcd8.c<br> +contrib/gdevdj9.c<br> +contrib/gdevgdi.c<br> +contrib/gdevhl12.c<br> +contrib/gdevln03.c<br> +contrib/gdevlx32.c<br> +contrib/gdevlx7.c<br> +contrib/gdevmd2k.c<br> +contrib/gdevop4w.c<br> +contrib/gdevxes.c<br> +contrib/japanese/dviprlib.c<br> +contrib/japanese/gdev10v.c<br> +contrib/japanese/gdevalps.c<br> +contrib/japanese/gdevdmpr.c<br> +contrib/japanese/gdevespg.c<br> +contrib/japanese/gdevfmlbp.c<br> +contrib/japanese/gdevfmpr.c<br> +contrib/japanese/gdevj100.c<br> +contrib/japanese/gdevlbp3.c<br> +contrib/japanese/gdevmjc.c<br> +contrib/japanese/gdevml6.c<br> +contrib/japanese/gdevnpdl.c<br> +contrib/japanese/gdevp201.c<br> +contrib/japanese/gdevrpdl.c<br> +contrib/lips4/gdevl4r.c<br> +contrib/lips4/gdevl4v.c<br> +contrib/lips4/gdevlprn.c<br> +contrib/lips4/gdevlprn.h<br> +contrib/opvp/gdevopvp.c<br> +contrib/pcl3/eprn/eprnparm.c<br> +contrib/pcl3/eprn/gdeveprn.c<br> +contrib/pcl3/eprn/pagecount.c<br> +contrib/pcl3/eprn/pagecount.h<br> +contrib/pcl3/src/gdevpcl3.c<br> +contrib/pcl3/src/pcl3opts.c<br> +contrib/pcl3/src/pclgen.c<br> +contrib/pcl3/src/pclgen.h<br> +contrib/pcl3/src/pclscan.c<br> +cups/gdevcups.c<br> +devices/contrib.mak<br> +devices/devs.mak<br> +devices/gdev3852.c<br> +devices/gdev4081.c<br> +devices/gdev4693.c<br> +devices/gdev8510.c<br> +devices/gdevatx.c<br> +devices/gdevbit.c<br> +devices/gdevbj10.c<br> +devices/gdevbmp.c<br> +devices/gdevbmp.h<br> +devices/gdevbmpc.c<br> +devices/gdevccr.c<br> +devices/gdevcdj.c<br> +devices/gdevcfax.c<br> +devices/gdevchameleon.c<br> +devices/gdevcif.c<br> +devices/gdevclj.c<br> +devices/gdevcljc.c<br> +devices/gdevcmykog.c<br> +devices/gdevcslw.c<br> +devices/gdevdfax.c<br> +devices/gdevdjet.c<br> +devices/gdevdjtc.c<br> +devices/gdevdljm.c<br> +devices/gdevdljm.h<br> +devices/gdevdm24.c<br> +devices/gdevepsc.c<br> +devices/gdevepsn.c<br> +devices/gdevescp.c<br> +devices/gdevfax.c<br> +devices/gdevfax.h<br> +devices/gdevfpng.c<br> +devices/gdevgprf.c<br> +devices/gdevhl7x.c<br> +devices/gdevicov.c<br> +devices/gdevifno.c<br> +devices/gdevijs.c<br> +devices/gdevimgn.c<br> +devices/gdevjbig2.c<br> +devices/gdevjpeg.c<br> +devices/gdevjpx.c<br> +devices/gdevl31s.c<br> +devices/gdevlbp8.c<br> +devices/gdevlj56.c<br> +devices/gdevlp8k.c<br> +devices/gdevlxm.c<br> +devices/gdevmgr.c<br> +devices/gdevmiff.c<br> +devices/gdevn533.c<br> +devices/gdevo182.c<br> +devices/gdevokii.c<br> +devices/gdevpbm.c<br> +devices/gdevpcx.c<br> +devices/gdevpdfimg.c<br> +devices/gdevperm.c<br> +devices/gdevphex.c<br> +devices/gdevpjet.c<br> +devices/gdevplan.c<br> +devices/gdevplib.c<br> +devices/gdevpng.c<br> +devices/gdevpsd.c<br> +devices/gdevpsd.h<br> +devices/gdevpsim.c<br> +devices/gdevpxut.c<br> +devices/gdevpxut.h<br> +devices/gdevrinkj.c<br> +devices/gdevsj48.c<br> +devices/gdevstc.c<br> +devices/gdevtfax.c<br> +devices/gdevtfax.h<br> +devices/gdevtfnx.c<br> +devices/gdevtifs.c<br> +devices/gdevtifs.h<br> +devices/gdevtknk.c<br> +devices/gdevtsep.c<br> +devices/gdevupd.c<br> +devices/gdevwpr2.c<br> +devices/gdevxcf.c<br> +devices/rinkj/rinkj-byte-stream.c<br> +devices/rinkj/rinkj-byte-stream.h<br> +devices/vector/gdevpdf.c<br> +devices/vector/gdevpdfo.c<br> +devices/vector/gdevpdfp.c<br> +devices/vector/gdevpdfu.c<br> +devices/vector/gdevpdfx.h<br> +devices/vector/gdevpsu.c<br> +devices/vector/gdevpsu.h<br> +devices/vector/gdevpx.c<br> +devices/vector/gdevtxtw.c<br> +devices/vector/gdevxps.c<br> +pcl/pl/pjparse.c<br> +pcl/pl/pl.mak<br> +pcl/pl/plapi.c<br> +pcl/pl/plapi.h<br> +pcl/pl/plmain.c<br> +pcl/pl/plmain.h<br> +pcl/pl/plparams.c<br> +pcl/pl/pltop.h<br> +psi/files.h<br> +psi/iapi.c<br> +psi/iapi.h<br> +psi/imain.c<br> +psi/imain.h<br> +psi/imainarg.c<br> +psi/imainarg.h<br> +psi/iminst.h<br> +psi/int.mak<br> +psi/psapi.c<br> +psi/zfile.c<br> +windows/ghostscript.vcproj<br> +xps/ghostxps.h<br> +xps/xpsjxr.c<br> +xps/xpstop.c<br> +xps/xpszip.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-28 16:08:26 +0100 +</strong> +<br>Chris Lidell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=808021913baf763e07cc9eabc3716bfa507380ff">808021913baf763e07cc9eabc3716bfa507380ff</a> +<blockquote> +<p> + Bug 701083(2): Write the new key/value to DecodeParms<br> +<br> + There was a lengthy block of code that handled PDFs with buggy DCTDecode<br> + dictionaries with a missing, or incorrect Height entry. Since we now have a<br> + second key/value needing added to the DecodeParms and in two places, I've<br> + split that into a more general procedure, so we can add multiple new keys in<br> + one step.<br> +<br> + This is used to add/patch the Height key, and add the new ErrsAsEOD key<br> + (telling the CCITT fax decode filter to treat an error as a EOD).<br> +<br> +Resource/Init/pdf_draw.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-27 19:00:06 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1a344ed8506e46e77a0c58aed57de69ce8f54a20">1a344ed8506e46e77a0c58aed57de69ce8f54a20</a> +<blockquote> +<p> + Bug 701083: Add key to treat errors as end of data when decoding images.<br> +<br> + This specifically only applies to the CCITT decode filter at the<br> + moment, but the key will be in place for all image decoders to look<br> + at if required.<br> +<br> + A following commit will cause the PDF interpreter to set this key<br> + in the DecodeParms.<br> +<br> +base/scfd.c<br> +base/scfparam.c<br> +base/scfx.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-27 15:33:27 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c1739dcc6a8ceda1a5091c1b7dc8bb4870c6c76b">c1739dcc6a8ceda1a5091c1b7dc8bb4870c6c76b</a> +<blockquote> +<p> + Fix a couple more compiler warnings.<br> +<br> +psi/imain.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-24 14:32:59 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e2e83fb18feeae8786c16c0c309f9c1efdea2614">e2e83fb18feeae8786c16c0c309f9c1efdea2614</a> +<blockquote> +<p> + Bug 700956: don't free text enumerator in error condition<br> +<br> + Some errors mean the graphics library will decrement the reference count,<br> + potentially freeing, the text enumerator. So, on return to the interpreter<br> + don't try to free it.<br> +<br> + In these cases we can safely rely on the garbager to clean up the memory if the<br> + graphics library didn't.<br> +<br> +psi/zchar.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-24 09:50:49 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f8b9b5d02f2ba59256c92f6015eda02cb5d16c9e">f8b9b5d02f2ba59256c92f6015eda02cb5d16c9e</a> +<blockquote> +<p> + Fix a trivial (probably benign) compiler warning<br> +<br> +psi/imain.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-23 11:09:50 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c1844f1adbd7e1b215dde46d6211a84af5cea8a4">c1844f1adbd7e1b215dde46d6211a84af5cea8a4</a> +<blockquote> +<p> + Fix FONTPATH font file enumeration<br> +<br> + As part of improving security, we had replaced the reference using the name<br> + .scanfontheaders to find the array of headers for file types to scan with<br> + the immediatetly evaluated //.scanfontheaders in gs_fonts.ps<br> +<br> + That doesn't work correctly because the array is redefined multiple times<br> + as we add support for various font types during initialisation.<br> +<br> + Fix it by replacing the immediate evaluation with explicitly using the name key<br> + /.scanfontheaders to pull the array from systemdict.<br> +<br> +Resource/Init/gs_cff.ps<br> +Resource/Init/gs_fonts.ps<br> +Resource/Init/gs_ttf.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-23 11:18:06 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e42161d209e220aa84615b0af7efc7507f0f5397">e42161d209e220aa84615b0af7efc7507f0f5397</a> +<blockquote> +<p> + Fix crash when the default font can't be found.<br> +<br> + Making .loadfontloop into an operator messes up the error condition recovery<br> + when we've had to fall back to the default font, and even that is not<br> + available (i.e. when GenericResourceDir is set to somewhere that isn't actually<br> + a viable resource directory).<br> +<br> +Resource/Init/gs_fonts.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-22 19:07:07 -0600 +</strong> +<br>Henry Stiles <henry.stiles@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c2d78d6fd563bb3137991ce9f74ec2379e0de9aa">c2d78d6fd563bb3137991ce9f74ec2379e0de9aa</a> +<blockquote> +<p> + Remove unnecessary but harmless conditional from the last commit.<br> +<br> +pcl/pcl/pctop.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-22 13:36:31 -0600 +</strong> +<br>Henry Stiles <henry.stiles@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=690adf6efb53e61e965e6f37cd78b060b2fdb233">690adf6efb53e61e965e6f37cd78b060b2fdb233</a> +<blockquote> +<p> + Fix bug 701045 - infinite loop in pcl parser.<br> +<br> + The recent work to remove the specialized PL cursor code and replace<br> + it with streams removed end of data detection PCL depended on. End of<br> + data is now detected by the PCL parser by requiring a minimum number<br> + of bytes on the next call to the parser. If the required number of<br> + bytes are not provided the parser signals end of data by advancing the<br> + read pointer to the end of the buffer.<br> +<br> + The change precipitated some reorganization in how RTL is initialized,<br> + as well.<br> +<br> +pcl/pcl/pcl.mak<br> +pcl/pcl/pcmacros.c<br> +pcl/pcl/pcparse.c<br> +pcl/pcl/pcparse.h<br> +pcl/pcl/pcsfont.c<br> +pcl/pcl/pctop.c<br> +pcl/pxl/pxpthr.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-28 17:21:02 -0600 +</strong> +<br>Henry Stiles <henry.stiles@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1058e51507f4dfb483c104dd83e77375e62181b4">1058e51507f4dfb483c104dd83e77375e62181b4</a> +<blockquote> +<p> + Fix bug #700844, crash with very long font path.<br> +<br> + A long font path, specified by setting the environment variable<br> + PCLFONTSOURCE, resulted in buffer overflows in both PJL and PCL. Also,<br> + simplify the logic to load fonts in PCL because it is not<br> + necessary to parse a path list, a single path has been already been<br> + parsed in PJL.<br> +<br> + Related coverity id's addressed with this change are: 102193, 102206,<br> + 102208, and 102210.<br> +<br> +pcl/pl/pjparse.c<br> +pcl/pl/pllfont.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-11 11:18:23 -0600 +</strong> +<br>Henry Stiles <henry.stiles@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7a5637d2248501998ca9bb16bc51c93dd15a2d0d">7a5637d2248501998ca9bb16bc51c93dd15a2d0d</a> +<blockquote> +<p> + Remove unnecessary include file left from a test.<br> +<br> +pcl/pl/plfont.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-22 18:04:52 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3a9bb467fa9ff18ca398081c32edddc6732ce75e">3a9bb467fa9ff18ca398081c32edddc6732ce75e</a> +<blockquote> +<p> + Add gpdl to default products for clusterpush.pl<br> +<br> +toolbin/localcluster/clusterpush.pl<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-22 17:58:25 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=979f09479916c799d5df30df85c6caa30f86bffc">979f09479916c799d5df30df85c6caa30f86bffc</a> +<blockquote> +<p> + Add nopdfwrite to clusterpush.pl<br> +<br> +toolbin/localcluster/clusterpush.pl<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-21 07:39:49 -0700 +</strong> +<br>Nancy Durgin <nancy.durgin@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dd4be3eb2b28ff67dc3ee6e636bf7024bf9d1003">dd4be3eb2b28ff67dc3ee6e636bf7024bf9d1003</a> +<blockquote> +<p> + Add check for gs_error_handled for pattern handling<br> +<br> + Some clients (specifically gpdfi) can now return gs_error_handled if<br> + they already took care of everything in the PaintProc call. In this<br> + case, just do all the cleanup as for any other error, but it's not<br> + really an error, so return error code 0.<br> +<br> + This wll be needed for pdfi when merged in, should have no affect on current<br> + code.<br> +<br> +base/gxpcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-20 12:32:13 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2b925a84a9cbbeabba391d50f08b7064688298c2">2b925a84a9cbbeabba391d50f08b7064688298c2</a> +<blockquote> +<p> + Add gsapi_set_param to iapi.h as well.<br> +<br> + This keeps the gs and gpdl implementations of gsapi in sync.<br> +<br> +psi/iapi.c<br> +psi/iapi.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-20 13:07:13 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8aa6f8ce98e19ddc1a30b924169abf091748c1a9">8aa6f8ce98e19ddc1a30b924169abf091748c1a9</a> +<blockquote> +<p> + Fix warnings in pjparse.c<br> +<br> +pcl/pl/pjparse.c<br> +pcl/pl/pl.mak<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-17 18:51:13 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b932ec31114e4e7a7ace0089cb87ddb70dc7732f">b932ec31114e4e7a7ace0089cb87ddb70dc7732f</a> +<blockquote> +<p> + Add gsapi_set_param to gpdl gsapi.<br> +<br> + This takes an enumerated type and values, to allow programmatic<br> + setting equivalent to -d and -s on the command line.<br> +<br> + These should only be called between jobs, and then with care.<br> +<br> + Values are set in the device parameters and then passed to each<br> + language implementation in turn.<br> +<br> +pcl/pl/plapi.c<br> +pcl/pl/plapi.h<br> +pcl/pl/plmain.c<br> +pcl/pl/plmain.h<br> +pcl/pl/pltop.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-16 19:59:58 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dc9c23ed944f653e384fd12fbaf6328e8bab8a33">dc9c23ed944f653e384fd12fbaf6328e8bab8a33</a> +<blockquote> +<p> + PJL GSSET and GSSETSTRING<br> +<br> + Add GSSET and GSSETSTRING PCL commands for setting device<br> + parameters/language parameters from PJL.<br> +<br> +pcl/pl/pjparse.c<br> +pcl/pl/plmain.c<br> +pcl/pl/plmain.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-18 13:52:25 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=85c99aa093d4e26b9f40c0a4eb686a7f5b2b2d64">85c99aa093d4e26b9f40c0a4eb686a7f5b2b2d64</a> +<blockquote> +<p> + pdfwrite - fix ColorConversionStrategy<br> +<br> + No bug number, this arose from a question asked on Stack Overflow.<br> +<br> + At some point I removed the enumerated value ccs_UseDeviceDependentColor<br> + but I failed to remove the name "UseDeviceDependentColor" from the<br> + list of strategy names. This meant that setting ColorConversionStrategy<br> + to anything except LeaveColorUnchanged was 'out by 1' in the enumerated<br> + data type.<br> +<br> + This led (for example) to Gray being treated as RGB for the purposes<br> + of the output colour space.<br> +<br> +devices/vector/gdevpsdf.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-08 08:19:55 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=95f7befcec1b30fd5014c8ad616485d32901ce33">95f7befcec1b30fd5014c8ad616485d32901ce33</a> +<blockquote> +<p> + Make sure transparency page group is isolated<br> +<br> + Per the spec, the page group should be treated as an isolated<br> + group. This allows the page group to specify a blending color space.<br> + This resulted in over 90 pages of bmpcmp diffs. I went over all<br> + of them. They are progressions. Most are very minor color differences<br> + as we end up doing the blending and drawings in different color spaces<br> + compared to prior to the commit<br> +<br> +base/gstrans.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-17 14:37:30 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ebe7cd2b5a7a000c5ebf0bfa061f872faaf098e3">ebe7cd2b5a7a000c5ebf0bfa061f872faaf098e3</a> +<blockquote> +<p> + Handle trans group knockouts properly if page group is isolated<br> +<br> + Page groups by definition have to be isolated. A fix for this to<br> + ensure that the proper group color space is used for the page group<br> + revealed a problem when the source PDF actually indicated the page<br> + group was isolated. This led to an incorrect selection of subsequent<br> + backdrops for any knockout groups contained.<br> +<br> +base/gdevp14.c<br> +base/gdevp14.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-17 11:20:45 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ee8a1c574198351d3ec1b181428d3d0159b4f80a">ee8a1c574198351d3ec1b181428d3d0159b4f80a</a> +<blockquote> +<p> + PDF interpreter - ignore errors in some faulty FreeText annotations<br> +<br> + Bug #701058 "Can not convert pdf to tiff"<br> +<br> + The PDF file has a FreeText annotation with no appearance stream and<br> + faults in the Annotation dictionary.<br> +<br> + Firstly (not perhaps strictly a fault) the /Contents key has a string<br> + value with nothing in it. This isn't exactly an error, but it makes the<br> + annotation pointless.<br> +<br> + More seriously the /DA key contains:<br> +<br> + (//Helvetica 12 Tf 0 g)<br> +<br> + The double // on the font name means we end up with an empty name<br> + on the stack, which causes errors.<br> +<br> + In this commit:<br> +<br> + Execute the DA processing in a stopped context, so that if it fails we<br> + don't throw an error.<br> +<br> + Surround the DA processing with a mark so that we can clear the stack if<br> + it leaves anything behind.<br> +<br> + Surround all of that with a 'gstate...setgstate' or 'gstate...pop'. If<br> + we get an error this allows us to restore the graphics state to the<br> + point before we did the DA processing. If we didn't get an error then<br> + we can just discard the saved gstate.<br> +<br> + Finally, check the length of the Contents string. If its 0, don't even<br> + try to draw it. If its more than 0, but less than 4, then don't attempt<br> + to check for UTF16 (2 byte BOM + 2 bytes for character means a minimum<br> + of 4 bytes).<br> +<br> + This results in slightly different output from pdfwrite with one file,<br> + tests_private/pdf/sumatra/1331_-_prints_garbled.pdf, which results in<br> + very small (single pixel) differences at 72 dpi.<br> +<br> +Resource/Init/pdf_draw.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-17 09:15:48 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2b4f54e13d9a5346e1c4c0a3a577d27065e67313">2b4f54e13d9a5346e1c4c0a3a577d27065e67313</a> +<blockquote> +<p> + Remove the redundant -E and -A command line params<br> +<br> + The functionality for both are now (and have been for a *long* time!) accessed<br> + via -Z# and -Z@ respectively.<br> +<br> + This solves a clash for -E with the other language implementations.<br> +<br> +doc/Use.htm<br> +psi/imainarg.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-11 09:24:38 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=29fc52982904f7b24349f7fe369f614b3081ce90">29fc52982904f7b24349f7fe369f614b3081ce90</a> +<blockquote> +<p> + DeviceN - handle out of memory errors<br> +<br> + When altering the DeviceN colour space handling in the PostScript<br> + interpreter to use C strings instead of name indices, I neglected to<br> + consider the possibility of a failure to allocate memory for the string.<br> +<br> + This commit just catches the fault and returns a VM error to the<br> + interpreter.<br> +<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-10 14:49:29 +0100 +</strong> +<br>i3v <i3v@mail.ru><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=55d04ff91a70a2cba1a1c15407c94f936c5f91f4">55d04ff91a70a2cba1a1c15407c94f936c5f91f4</a> +<blockquote> +<p> + Documentation - fix various typos in VectorDevices.htm<br> +<br> + Bug #701021 "Typos in VectorDevices.htm"<br> +<br> + Fixes supplied by 'i3v'.<br> +<br> +doc/VectorDevices.htm<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-10 09:32:26 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3db10c55b3ef621770bf6e93dfc1605e766adef2">3db10c55b3ef621770bf6e93dfc1605e766adef2</a> +<blockquote> +<p> + Improve test for PS resources in romfs<br> +<br> + Previously, although we always built a romfs, building gs with COMPILE_INITS=0<br> + meant we included a romfs which was devoid of content, and an attempt to find<br> + the status of the device would return 'gs_error_unregistered'. We used this<br> + to determine whether to automatically add '%rom%Resource/Init' to the default<br> + search path.<br> +<br> + In the gpdl case (for the sake of PCL and XPS), we always have a usable romfs<br> + (even with COMPILE_INITS=0) for the ICC profiles, so the above test gave a<br> + false positive: gs would add the romfs to the search path, despite there being<br> + no usable Postscript resources in it.<br> +<br> + So, revise the test to explicitly check for Resource/Init/gs_init.ps on the<br> + romfs. If the romfs is, indeed, empty, it will still return<br> + 'gs_error_unregistered', but in the gpdl case, it will return<br> + 'gs_error_undefinedfilename', and we correctly skip adding the romfs path to<br> + the search paths for Postscript resources<br> +<br> +psi/imain.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-08 13:23:26 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d2809b15153eedbbe1bfb43fc259bf674e353f42">d2809b15153eedbbe1bfb43fc259bf674e353f42</a> +<blockquote> +<p> + Add an (interim) --enable-gpdl configure option<br> +<br> + This adds gpdl to the default target list for make.<br> +<br> + Mainly to get the .so build usable without having edit the makefiles.<br> +<br> + This will be deprecated when gpdl is always in the default target list.<br> +<br> +Makefile.in<br> +configure.ac<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-09 09:49:56 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d0d7b8d3866aecafac3601ebd9b4b5d83f4fbe91">d0d7b8d3866aecafac3601ebd9b4b5d83f4fbe91</a> +<blockquote> +<p> + Fix some compiler warnings<br> +<br> + and remove some #if directives accidentally included in a commit<br> +<br> +base/gscdevn.c<br> +devices/vector/gdevpdfc.c<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-08 14:28:41 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=86a81b823950c712ac03e0139449045a81672d01">86a81b823950c712ac03e0139449045a81672d01</a> +<blockquote> +<p> + pdfwrite - extend DeviceN attributes dictionary generation<br> +<br> + Now that we cater for the /Process dictionary in a DeviceN attributes<br> + dictionary (and the Subtype) we need to emit those from pdfwrite too.<br> +<br> +devices/vector/gdevpdfc.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-08 14:27:23 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2019db2e552653bd0c27377d500de1041c9fd0bc">2019db2e552653bd0c27377d500de1041c9fd0bc</a> +<blockquote> +<p> + PostScript colour space handling<br> +<br> + We were not catering for a /Subtype in a DeviceN attributes dictionary<br> + having a value which is a string type not a name type. I can't quite<br> + see how we are ending up with a string type here, since the PDF file<br> + has it as a name, but it does. Dealing with both resolves many errors.<br> +<br> + The second change is more far-reaching; when processing an attributes<br> + dictionary for a DeviceN colour space we may need to create colour<br> + spaces for the Process dictionary /ColorSpace and for any of the entries<br> + in the Colorants dictionary. We were doing that by calling<br> + zsetcolorspace() which mostly works well, however there is one<br> + optimisation which can cause a problem; if the target space is the same<br> + as the current *interpreter* colour space, then zsetcolorspace()<br> + simply returns.<br> +<br> + The problem is that if we are halfway through processing a DeviceN<br> + space then we haven't set the interpreter space to the new colour space<br> + array yet which can mean that we incorrectly detect one of the target<br> + spaces as being the same as the current space. This leads to us trying<br> + to use the current space in the graphics state (the DeviceN space) as<br> + the target space, with unfortunate consequences.<br> +<br> + So create a new version of zsetcolorspace which doesn't do that<br> + optimisation and use that when processing the various target spaces in<br> + the DeviceN attributes dictionary.<br> +<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-07 12:52:25 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0d75869134c69963406500b536fb1bb1c97c8621">0d75869134c69963406500b536fb1bb1c97c8621</a> +<blockquote> +<p> + Separation - change ink name to be a C string instead of name index<br> +<br> + As indicated in previous commits, change the stored ink name in the<br> + colour space structure params.separation from a numeric value<br> + (gs_separation_name) into a C string.<br> +<br> + We never have to pass these back to the interpreter, so we allocate the<br> + storage using the non-GC allocater.<br> +<br> +base/gscdevn.c<br> +base/gscsepr.c<br> +base/gscspace.h<br> +base/gsequivc.c<br> +base/gsicc_cache.c<br> +base/gxcmap.c<br> +devices/vector/gdevpdfc.c<br> +devices/vector/gdevpdfg.c<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-06 16:51:26 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=97253bf54a701d5e433378df953e066d009afde0">97253bf54a701d5e433378df953e066d009afde0</a> +<blockquote> +<p> + DeviceN - change ink names to be C strings instead of name indices<br> +<br> + As indicated in previous commits, change the stored ink names in the<br> + colour space structure params.device_n from numeric values<br> + (gs_separation_name) into C strings.<br> +<br> + We never have to pass these back to the interpreter, so we allocate the<br> + storage using the non-GC allocater, which simplifies things for the<br> + array which used to store the indices and now stores the pointers to the<br> + C strings.<br> +<br> +base/gscdevn.c<br> +base/gscspace.h<br> +base/gsequivc.c<br> +base/gsicc_cache.c<br> +base/gsicc_manage.c<br> +base/gxcmap.c<br> +devices/vector/gdevpdfc.c<br> +devices/vector/gdevpdfg.c<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-07 19:54:57 +0100 +</strong> +<br>Shailesh Mistry <shailesh.mistry@hotmail.co.uk><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=880a700f691f444c483053f48b3c0b0f3a920883">880a700f691f444c483053f48b3c0b0f3a920883</a> +<blockquote> +<p> + Bug 697545 : Prevent SEGV caused by double freeing.<br> +<br> + Prevent running finalize for devices with a custom finalize.<br> +<br> + Error created using :-<br> + MEMENTO_FAILAT=1767 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.0270<br> +<br> +base/gdevdflt.c<br> +base/gspaint.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-02 08:00:46 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=284ba1a6491088ab8ea9985f5df882c43bd3ca12">284ba1a6491088ab8ea9985f5df882c43bd3ca12</a> +<blockquote> +<p> + Use deviceN attributes process color color space<br> +<br> + If the DeviceN color space includes an attributes entry and<br> + it has a process color space, and the color space is of the proper<br> + type use that as the source color for the process components. If<br> + instead the alternate tint transform color space is the correct type<br> + use that as a hint. If neither work then set to the defined default_cmyk<br> + source color space. If all fail due to issues with ICC profiles then<br> + the CMYK source process colorants will pass through to the output device.<br> +<br> +base/gdevp14.c<br> +base/gscdevn.c<br> +base/gsequivc.c<br> +base/gsicc.c<br> +base/gxcmap.c<br> +base/gxcmap.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-06 13:46:42 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=754b4eb77d24ff0273b530aa748bbf925b715d9c">754b4eb77d24ff0273b530aa748bbf925b715d9c</a> +<blockquote> +<p> + Ensure correct memory allocation of Colorant strings<br> +<br> + I'm not happy with using ref_to_string() as it doesn't seem to behave<br> + entirely as I would expect, so modify the code to explicitly allocate<br> + the memory used to store the Colorant name.<br> +<br> + Also fix a compiler warning.<br> +<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-06 09:10:22 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=76022c9c27a0f4031553cf3a5eb2c009b26b19be">76022c9c27a0f4031553cf3a5eb2c009b26b19be</a> +<blockquote> +<p> + DeviceN - store C strings for Colorant names, not name indices<br> +<br> + For DeviceN spaces with an attributes dictionary containing a<br> + Colorants dictionary we were storing the Colorant names as a name index<br> + (index into the interpreter name table). Additionally we store a<br> + procedure callback to recover the C string from the name index.<br> +<br> + This is problematic for several reasons; firstly it requires all the<br> + interpreters to either have a name table or some close equivalent so<br> + that a C string can be recovered from a numeric value.<br> +<br> + Secondly the lifetime of the string is divorced from the lifetime of the<br> + C structure using it. Because there's no easy way for the interpreter to<br> + know when the graphics library has freed the colour space structure<br> + the interpreter is forced to retain the relationship between the name<br> + index and the C string until the job is completed.<br> +<br> + Both of these will be problems for the new PDF interpreter, so this is<br> + step 1 in altering this. After this we will still need to change the<br> + storage of the DeviceN and Separation ink names, which are handled the<br> + same way.<br> +<br> +base/gscdevn.c<br> +base/gscdevn.h<br> +base/gxcdevn.h<br> +devices/vector/gdevpdfc.c<br> +devices/vector/gdevpdfg.c<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-03 17:35:49 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8b407511d2fad0108a76c6b46dc54a1770ea3ade">8b407511d2fad0108a76c6b46dc54a1770ea3ade</a> +<blockquote> +<p> + fix commit c2d50885614481ebf542578e69ce4bcbbfea6532<br> +<br> + don't retest code, and fix some compiler warnings<br> +<br> +base/gscdevn.h<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-03 13:27:22 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c2d50885614481ebf542578e69ce4bcbbfea6532">c2d50885614481ebf542578e69ce4bcbbfea6532</a> +<blockquote> +<p> + DeviceN - handle attributes Subtype and cleaning up<br> +<br> + Previously we were ignoring the /Subtype in the attributes dictionary<br> + of a DeviceN colour space (if attributes were present). We may need to<br> + be able to tell the difference (now that we handle /Process) because<br> + the values associated with the process components must be stored in<br> + their natural form (eg subtractive for CMYK, additive for RGB) when<br> + the Subtype is NChannel.<br> +<br> + The remainder of the commit tidies up naming; previously we had a<br> + structure called gs_devicen_attributes, which was used to store the<br> + Colorants entry form an attributes dictionary. Since we now handle<br> + other aspects of the attributes dictionary as well, this was misleading<br> + so the structure has been renamed throughout as gs_devicen_colorant<br> + (since each structure defines only one colorant, the plural name was<br> + also misleading). Apparently pdfwrite is the only client for this<br> + currently anyway.<br> +<br> + Finally, moved the 'devn_process_space' from the general graphics<br> + state colour space structure into the DeviceN params structure, as its<br> + only relevant to DeviceN (and indeed only a DeviceN with an attributes<br> + dictionary which contains a /Process entry)<br> +<br> +base/gscdevn.c<br> +base/gscdevn.h<br> +base/gscspace.c<br> +base/gscspace.h<br> +base/gxcdevn.h<br> +devices/vector/gdevpdfc.c<br> +devices/vector/gdevpdfg.c<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-02 16:40:18 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=22d88ad48409a130007976ae26536cc9d99c16d9">22d88ad48409a130007976ae26536cc9d99c16d9</a> +<blockquote> +<p> + Fix an oversight in DeviceN attributes processing<br> +<br> + If we have no Colorants entry we still want to check for a Process<br> + entry, but to do so we need to signal to setcolorspace_cont(), the<br> + routine which calls this one, that we do want to keep processing the<br> + colour space.<br> +<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-02 13:12:28 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7c70031f8be95585bcf439d12e552d386e4e2125">7c70031f8be95585bcf439d12e552d386e4e2125</a> +<blockquote> +<p> + Capture the /Components from a DeviceN /Process dictionary<br> +<br> + Following on from commit 5e84879db91fdc8569a85a394def391695152720 and<br> + Michael's commit c6ac30d231946062b41c56df375b240583e75b35 this adds<br> + code to check for the existence of a /Process dictionary in the<br> + attributes dictionary (if present) of a DeviceN colour space.<br> +<br> + Also fixed/added a few comments to the existing code and did some<br> + tidying up of error return handling.<br> +<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-01 10:06:41 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c6ac30d231946062b41c56df375b240583e75b35">c6ac30d231946062b41c56df375b240583e75b35</a> +<blockquote> +<p> + Add holder for process color names in DeviceN color space parameters<br> +<br> + As part of the work to use the DeviceN attributes process dictionary<br> + we need to have a place to store the colorant names. They will<br> + be stored as an array of C strings in the pcs->params.device_n structure.<br> + This commit adds them to the structure and frees them during the color<br> + space finalization.<br> +<br> +base/gscdevn.c<br> +base/gscspace.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-01 17:49:03 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5e84879db91fdc8569a85a394def391695152720">5e84879db91fdc8569a85a394def391695152720</a> +<blockquote> +<p> + Process DeviceN attributes dictionary, /Process dictionary, /ColorSpace<br> +<br> + PostScript PDF interpreter changes; retrieve the Process dictionary<br> + from the DeviceN attributes dictionary (if present). Extract the<br> + ColorSpace, resolve the ColorSpace (turns any references into actual<br> + objects), and store the result back in the Process dictionary. Finally<br> + store the Process dictionary in the attributes dictionary which we<br> + pass to setcolorspace.<br> +<br> + PostScript interpreter, C changes; add a new 'stage' for DeviceN<br> + colour space handling. In stage 3, check for the existence of an<br> + attributes dictionary, then a /Process dictionary, and a /ColorSpace<br> + entry. Retrieve the entry. Set up a new continuation procedure<br> + 'devicenprocess_cont'. The continuation procedure calls zsetcolorspace()<br> + to set the /ColorSpace as the current space. On returning, retrieve<br> + the current color space, attach it to the DeviceN graphics state colour<br> + space and finish.<br> +<br> + Still to do; process /Components, add the equivalent code to pdfi,<br> + check pdfwrite to see if we can handle this. Tidy up comments.<br> + Committing now so Michael can carry on with the CMS work.<br> +<br> +Resource/Init/pdf_draw.ps<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-05-01 13:17:25 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6742ad7d26dc7bb8cc33aef9f96f86d892d4a424">6742ad7d26dc7bb8cc33aef9f96f86d892d4a424</a> +<blockquote> +<p> + Valgrind: image_render_interpolate_landscape_icc.<br> +<br> + Don't color convert the unprocessed margins of the buffer.<br> + These areas are never inited, so a warning is given. No<br> + harm is done as they are never actually rendered, but it's<br> + faster and cleaner to skip them too.<br> +<br> +base/gxiscale.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-30 15:13:25 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=04db6ace1fb97dcef79d9bdbb01a1c8a63c55d88">04db6ace1fb97dcef79d9bdbb01a1c8a63c55d88</a> +<blockquote> +<p> + Add a devn_process_space to color gs_color_space_s<br> +<br> + This is in preparation for having the process color<br> + space as defined in the DeviceN (NChannel) Process<br> + dictionary.<br> +<br> +base/gscspace.c<br> +base/gscspace.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-30 11:49:07 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e1f9edfcafc3f73f43b85afacb8d788f7e573cf6">e1f9edfcafc3f73f43b85afacb8d788f7e573cf6</a> +<blockquote> +<p> + Add methods to detect pure process colors in Sep and DeviceN color spaces<br> +<br> + When the colors in the separation or Devicen color space consist all of<br> + one particular process color model, we would like to consider the use<br> + of the alternate tint transform color space as an indication of the intent<br> + for these color spaces (assuming the attributes information was not there).<br> + For example, if we had a DeviceN color space<br> + of [Cyan Magenta] and the alternate tint transform color space was a<br> + CMYK ICC color space, that would be a hint that we should treat the color<br> + as being in that space. This commit provides us with the information as<br> + to the colorants all being in one particular process space which is<br> + a requirement.<br> +<br> +base/gscdevn.c<br> +base/gscsepr.c<br> +base/gscspace.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-30 15:26:11 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b380b655b64a37a77b98dab881ff0aad0c62586e">b380b655b64a37a77b98dab881ff0aad0c62586e</a> +<blockquote> +<p> + Nobble pdfwrite genrated /ID entries in cluster tests.<br> +<br> + Avoid having the /ID values depend on the output filename<br> + in cluster testing. This should allow us to compare the<br> + results of pdfwriting between gs and gpdl. It also removes<br> + one more thing to get right when trying to manually reproduce<br> + cluster results.<br> +<br> +devices/vector/gdevpdf.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-30 10:40:20 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fd5758e4d55c510fa4ad0047c10b13cf928cfb74">fd5758e4d55c510fa4ad0047c10b13cf928cfb74</a> +<blockquote> +<p> + Make pdfwrite fileID calculations consistent on cluster.<br> +<br> + Nobble the timing calculations under CLUSTER builds, so<br> + we get consistent results.<br> +<br> + Also, move to using realtime, rather than usertime (as the goal<br> + is to have something different each time).<br> +<br> +devices/gdevpdfimg.c<br> +devices/vector/gdevpdf.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-29 17:58:42 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=35c40cdaa2f79432f01733d3f69f95947db5d60b">35c40cdaa2f79432f01733d3f69f95947db5d60b</a> +<blockquote> +<p> + Change implementation of gsicc_support_named_color<br> +<br> + gsicc_support_named_color now will have available all the names<br> + in the DeviceN color space. If there are no spot names<br> + in the list, it will return false ensuring that the process colors<br> + will be color managed.<br> +<br> +base/gscdevn.c<br> +base/gscsepr.c<br> +base/gsicc_cache.c<br> +base/gsicc_cache.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-29 18:39:23 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8026e11e50306a51dc3bb6f2bdc57f34986acd62">8026e11e50306a51dc3bb6f2bdc57f34986acd62</a> +<blockquote> +<p> + Fix undefined behaviour in rops.<br> +<br> + We were indexing off the end of a static table. Annyoingly,<br> + valgrind has failed to pick this up for years.<br> +<br> +base/gsroprun.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-29 11:14:06 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0bafbd9c1273fab0dc79fd20db0ffc4443683f96">0bafbd9c1273fab0dc79fd20db0ffc4443683f96</a> +<blockquote> +<p> + PDF interpreter - Decode ToUnicode entries of the form /Identity-H/V<br> +<br> + Bug #701003 "Text searchability broken due to omission of /ToUnicode /Identity-H"<br> +<br> + The PDF references from 1.2 too 2.0 all state that the value associated<br> + with a ToUnicode key in a FontDescriptor must be a stream object. However<br> + this file (and one case seen previously, bug 687351) have FontDescriptor<br> + dictionaries where the value associated with a /ToUnicode key is a<br> + name object, in both cases /Identity-H.<br> +<br> + Although this is clearly not legal, Acrobat not only tolerates it, it<br> + actually uses it for search/copy/paste (see bug 701003 for details).<br> + Without the key Acrobat is unable to successfully search the output file.<br> +<br> + We can't simply preserve the name object as a ToUnicode value; when<br> + handling ToUnicode we actually decode the CMap and build a<br> + GlyphNames2Unicode map (an internal representation of the G2U data<br> + produced by the Microsoft PostScript printer driver). When writing the<br> + output file we use that information to get a Unicode value for each<br> + character we write, and build a new ToUnicode CMap using that.<br> +<br> + This commit tackles the problem by pre-scanning for a name object and<br> + then checking to see if its Identity-H or Identity-V (although we have<br> + not seen an Identity-V, there seems no reason why it wouldn't be<br> + equally valid). If we find either of these then we construct a<br> + GlyphNames2Unicode table for all possible values (0 - 65535) and store<br> + that with the font as normal. When we write the output file we only<br> + write the required entries for the subset font, so we write a now<br> + completely legal ToUnicode CMap, and Acrobat is equally happy with that<br> + as the original name.<br> +<br> + If the ToUnicode value isn't a name object, or isn't one of the<br> + identities then we proceed as before. This means we will print a<br> + warning for non conforming ToUnicode entries and ignore them.<br> +<br> +Resource/Init/pdf_font.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-28 19:59:12 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0b9c45fa86f7736e7fec170a135efa83636283ba">0b9c45fa86f7736e7fec170a135efa83636283ba</a> +<blockquote> +<p> + Have CMYK colors in DeviceN color spaces color managed when going to CMYK devices<br> +<br> + The current code was only doing color management of DeviceN CMYK when going to<br> + the separation device (e.g. tiffsep and psdcmyk). It should also be doing this<br> + for pure CMYK devices like tiff32nc etc. With RGB devices we will be going through<br> + the alternate tint transform. The would only pertain to DeviceN color spaces composed<br> + of only process colors (e.g. [Cyan Magenta]). If a spot color was included we would<br> + be going through the alternate tint transform for a device like tiff32nc.<br> +<br> + So with this commit if you have a command line like<br> +<br> + -sDEVICE=tiff32nc -sDefaultCMYKProfile=src_cmyk.icc -o output.tif -f input.pdf<br> +<br> + it will treat the CMYK values in the DeviceN color space the same as a DeviceCMYK<br> + source color and make use of the src_cmyk.icc profile to handle those. As mentioned<br> + this worked with psdcmyk and tiffsep but not standard CMYK devices.<br> +<br> +base/gxcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-01 20:30:23 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=68511243fb4817e8170023d1d6922956325a139d">68511243fb4817e8170023d1d6922956325a139d</a> +<blockquote> +<p> + Move transfer functions to 16 bits.<br> +<br> + This means that in 'deep' modes, we sample them in 257 places<br> + (0000,0100,....ff00,ffff) rather than 256 (00,01,...ff), and<br> + in 16 bits rather than 8. We also interpolate them on reading.<br> +<br> + This in turn increases the size of the data put into the clist.<br> +<br> +base/gdevp14.c<br> +base/gstparam.h<br> +base/gstrans.c<br> +base/gstrans.h<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-26 21:24:28 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e2507c443fcd1456ff65695901339fc96f4bbf73">e2507c443fcd1456ff65695901339fc96f4bbf73</a> +<blockquote> +<p> + Fix improper logic in named color support<br> +<br> +base/gscdevn.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-26 16:47:29 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fb9f948ec79d18c2574a9a0bdaf9ab1aeee21e58">fb9f948ec79d18c2574a9a0bdaf9ab1aeee21e58</a> +<blockquote> +<p> + And one more fix to the named color blending.<br> +<br> + Fixing issues introduced in previous commit.<br> +<br> +base/gsicc_cache.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-26 11:25:19 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e1a534e843743230019de57a36a04129347a505e">e1a534e843743230019de57a36a04129347a505e</a> +<blockquote> +<p> + Fix named color blending<br> +<br> + Named color blending was not working the way intended. This was clearly visible<br> + when pushing a gradient through. This now does a reasonable result blending<br> + the first colorant with white and then subsequent colorants with the current<br> + colorant.<br> +<br> +base/gsicc_cache.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-26 14:40:22 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6fcd76043a6fe69ca2b8ecac498f9ca79829931f">6fcd76043a6fe69ca2b8ecac498f9ca79829931f</a> +<blockquote> +<p> + Bug 700973: CIDFont substitution: avoid multiply applying metrics<br> +<br> + findCIDFont: we make various efforts to produce a synthetic font style<br> + (bold, light, italic etc) if the actual type face style is not available.<br> +<br> + In these cases, we have to avoid reusing an existing CIDFont substitute because<br> + the CDevProc will have been 'hooked' to apply the width metrics drawn from the<br> + PDF file. We want to, if at all possible, use the CIDFont as originally loaded.<br> +<br> +Resource/Init/pdf_font.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-25 17:20:12 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cb1414723d95c6813e8e44a8c0529f0063998378">cb1414723d95c6813e8e44a8c0529f0063998378</a> +<blockquote> +<p> + pdfwrite - handle user-defined PCL fonts with character codes > 256<br> +<br> + Bug #700996 "PCL Files Processing failure"<br> +<br> + The problem is that we cannot handle a character code in excess of 256<br> + in a PDF Font (we would have to create a CIDFont, which is too much<br> + work). This was causing us to fail to attach a PDF font to the current<br> + (user-defined PCL) font. When we later tried to retrieve the font<br> + that caused a seg fault.<br> +<br> + If we simply return an error when there is no attached font then the<br> + fallback machinery will take us through generating an image instead.<br> +<br> + This, however, caused the original file not to work properly, text was<br> + going missing. Forcing 'early accumulator' to be 0 so that we created a<br> + new font resolved the problem. Its better, however to remove that entire<br> + section of code, since it now has no purpose.<br> +<br> + This commit results in a PDF file with the correct appearance. A number<br> + of out test suite files exhibit small differences, particularly at<br> + low (75 dpi) resolution, but nothing is actually incorrect.<br> +<br> +devices/vector/gdevpdti.c<br> +devices/vector/gdevpdtt.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-24 12:27:16 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7b1d3a9fcc40d0dd2dc779830abe21da83183c11">7b1d3a9fcc40d0dd2dc779830abe21da83183c11</a> +<blockquote> +<p> + Fix two issues in replace color management.<br> +<br> + Always do replacement for this demo implementation and<br> + use get_color_mapping_procs_subclass to get the device<br> + color mapping procs. The old method had an issue with<br> + overprint compositor and psdcmyk device.<br> +<br> +base/gsicc_replacecm.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-24 11:20:57 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=29d227c79fa8554e65eb1e081a81cbcb13b76b8a">29d227c79fa8554e65eb1e081a81cbcb13b76b8a</a> +<blockquote> +<p> + Avoid double free in replace color management code<br> +<br> +base/gsicc_replacecm.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-24 10:27:25 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2f947ad5c32968cb113cb3ba4958e239dcf730a5">2f947ad5c32968cb113cb3ba4958e239dcf730a5</a> +<blockquote> +<p> + Use space in calls to gs_strtok<br> +<br> +base/gsicc_manage.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-23 21:32:00 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8881a51d55df7df70f4e0083be8569e09213dfba">8881a51d55df7df70f4e0083be8569e09213dfba</a> +<blockquote> +<p> + Fix several warnings and issues from last commit.<br> +<br> +base/gscsepr.c<br> +base/gsicc_cache.c<br> +base/gxcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-24 10:48:07 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7f34ef8c946be47d5a5dcc412b3da608a0066c44">7f34ef8c946be47d5a5dcc412b3da608a0066c44</a> +<blockquote> +<p> + Fix typo in 16bit code in gxblend.c<br> +<br> + src_shape needs to be 16bits, not a byte now.<br> +<br> +base/gxblend.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-23 20:11:24 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fea343608ce813156ae8ffc2ea6d42fc5f198e64">fea343608ce813156ae8ffc2ea6d42fc5f198e64</a> +<blockquote> +<p> + Add support for named color when going to separation devicen_icc_cmyk<br> +<br> + When going through named color processing with the target device either<br> + tiffsep or psdcmyk, cmap_devicen_direct and cmap_devicen_halftoned were<br> + doing an additional cmyk icc mapping. This mapping was needed to ensure<br> + that CMYK values matched DeviceN mapping values of CMYK+Spot where the Spot<br> + value was 0 percent. With the use of named color mapping, we want to avoid this<br> + icc mapping. Fixing this issue involved adding a boolean value to the DeviceN and Separation<br> + color space params to indicate if the spot colorant(s) are supported by the<br> + named color profile. This determination is made during the install of the<br> + device so that it need only be done once. To do that, we needed to add a<br> + method, gsicc_support_named_color, in gsicc_cache.c, which goes with<br> + gsicc_transform_named_color, to indicate if the spot colorant is defined in<br> + the data that we are using. Tested with tiff24, tiff32 and psdcmyk to ensure<br> + named color mapping is occurring and that no additional mapping occurs after<br> + that.<br> +<br> +base/gscdevn.c<br> +base/gscsepr.c<br> +base/gscspace.h<br> +base/gsicc_cache.c<br> +base/gsicc_cache.h<br> +base/gxcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-02-19 16:38:26 +0000 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f0f2fa2a084758bcf99409ce19c2c1f93dc04d32">f0f2fa2a084758bcf99409ce19c2c1f93dc04d32</a> +<blockquote> +<p> + Deep color transparency<br> +<br> + Previously, all transparency blending has been done using the<br> + pdf14 compisitor working in 8 bits. Here, we extend it to be<br> + capable of working in 16 bits.<br> +<br> + When the compositor is created, it looks at the underlying device;<br> + if that device uses more than 8 bits per component (plus 8 bits<br> + for tags, if tags are in use), then we use 'deep' (i.e. 16 bit<br> + per component) pdf14 buffers.<br> +<br> +base/gdevdflt.c<br> +base/gdevmem.c<br> +base/gdevp14.c<br> +base/gdevp14.h<br> +base/gdevprn.c<br> +base/gsptype1.c<br> +base/gstrans.h<br> +base/gxblend.c<br> +base/gxblend.h<br> +base/gxblend1.c<br> +base/gxclrect.c<br> +base/gxclthrd.c<br> +base/gxcolor2.h<br> +base/gxp1fill.c<br> +base/gxpcolor.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-22 15:33:02 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ba8ff34e302ec3e65bd47b14796dcfaef157527f">ba8ff34e302ec3e65bd47b14796dcfaef157527f</a> +<blockquote> +<p> + Hack bmpcmp to accept 16bpc PSD files.<br> +<br> + We ignore the bottom bytes of the pixel data.<br> +<br> +toolbin/bmpcmp.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-19 08:16:57 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d8db95fb00af2fb543439242d3ac122aead88c94">d8db95fb00af2fb543439242d3ac122aead88c94</a> +<blockquote> +<p> + Fix some structure element name confusion in base/sjbig2_luratech.c<br> +<br> + A previous commit slightly modified some of memory management for jbig2 global<br> + data. In mirroring those changes to the Luratech version of the code, a couple<br> + of places were left with the structure element names from the jbig2dec version.<br> +<br> +base/sjbig2_luratech.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-16 19:30:02 +0100 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b399f849ce1aa391da1abeb23fd32e376b56e522">b399f849ce1aa391da1abeb23fd32e376b56e522</a> +<blockquote> +<p> + Bug 700624: Fix "full" pattern fills with gaps between cells.<br> +<br> + GS has an optimisation in it, whereby if an uncolored pattern fill<br> + is completely full (the mask is full of 1's), it doesn't bother to<br> + store the mask. When such a pattern is filled, the code knows just<br> + to fill the whole thing.<br> +<br> + Sadly, this optimisation breaks down when the cells have an X or Y<br> + step that means there should be gaps between the instances. GS<br> + currently fills the whole thing, gaps and all.<br> +<br> + To fix this, we either need to fix all the different fill routines<br> + to cope with this case, or (as I have done here), disable the<br> + optimisation in the case when the X and Y step is larger than the<br> + 'size' of the pattern cell.<br> +<br> +base/gxpcmap.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-18 16:58:41 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d86210973df93ccca0befd56afba2132da925ebc">d86210973df93ccca0befd56afba2132da925ebc</a> +<blockquote> +<p> + Bug 700986: Remove the crazy md5 file copying nonsense<br> +<br> + To preserve building as a standalone test exe, we avoided using Ghostscript<br> + includes in the md5 source and header files, but dynamically add them to<br> + copies of the files during the build. Since we no longer need/care for the<br> + stand alone exe, remove the build complication, and just include the header<br> + file normally.<br> +<br> +base/gsmd5.h<br> +base/lib.mak<br> +base/md5main.c<br> +doc/Develop.htm<br> +windows/ghostscript.vcproj<br> +windows/ghostscript_rt.vcxproj<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-18 14:24:04 +0100 +</strong> +<br>Alexander Grahn <a.grahn@fzd.de><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a3be0c9d86981313d8724f6c29f2feaa07152976">a3be0c9d86981313d8724f6c29f2feaa07152976</a> +<blockquote> +<p> + Bug #700984 "BMC pdfmark: BMC keyword missing from content stream (patch included)"<br> +<br> + Not sure how this has gone unnoticed for so long. The 'BMC' keyword was<br> + missing from the emission of the content of the pdfmark. The EMC and<br> + BDC pdfmarks seem to be OK.<br> +<br> + Thanks to Alexander Grahn for identifying the problem and supplying a<br> + patch to resolve it.<br> +<br> +devices/vector/gdevpdfm.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-18 11:18:35 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a7cccaac16e6fc252496ab630f7423262e05756d">a7cccaac16e6fc252496ab630f7423262e05756d</a> +<blockquote> +<p> + Fix commit d89bae568d5015144e5d68fea8221543111e119e<br> +<br> + Commit d89bae568d5015144e5d68fea8221543111e119e contained an oversight<br> + which unfortunately was missed due to the testing cluster being in a<br> + state of flux.<br> +<br> + Its possible for fonts to have a Subtype of Type1C as well as the<br> + noted CIDFontType0C and CIDFontType1C, and we need to cater for that<br> + as well.<br> +<br> + This mostly affected some of the Ghent Working Group test files, and<br> + not much else, so I've chosen just to push an addditional commit.<br> +<br> +Resource/Init/pdf_font.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-17 15:53:14 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d89bae568d5015144e5d68fea8221543111e119e">d89bae568d5015144e5d68fea8221543111e119e</a> +<blockquote> +<p> + PDF interpreter - change detection of CFF CIDFont types<br> +<br> + Bug #700982 "Error: unrecognized font file starts with <01000D02>"<br> +<br> + The code in pdf_font.ps to detect font types, and call an appropriate<br> + font loader works (in part) by reading the first 4 bytes from the font<br> + stream, and then using that as the key for a dictionary where the<br> + values are the font loading procedures.<br> +<br> + Most font types have a 'magic number' or similar at the start of the<br> + font data, but CFF fonts do not. In fact the header of a CFF font is<br> + highly variable, the only thing we can rely on being the font version<br> + byte (0x01), the remaining 3 bytes are variable.<br> +<br> + We've tackled this previously by simply adding more different varieties<br> + of string values, but this seems nonsensical. There are too many<br> + possible values for this to work reliably.<br> +<br> + Ideally I'd recode this to use the CIDFont Subtype to select the<br> + correct font loader, but that would mean recoding all of this, which is<br> + more work than I want to tackle in this code. Instead I've chosen to<br> + only have one single 'tag' in the dictionary, and I've extended the code<br> + handling the case where we don't find a tag in the dictionary.<br> +<br> + Previously this checked to see if the first two bytes of the string<br> + were <8001> and otherwise failed. I've modified this so that if the<br> + bytes are not <8001> then we check the dictionary /Subtype key. If its<br> + not present or isn't either CIDFontType0C or 1C then we still throw<br> + an error. Otherwise we discard the string we read, replace it with the<br> + one and only string we have stored in the font_tag_dict dictionary and<br> + proceed.<br> +<br> + If there is ever a version 2 of the CFF specification this will fail,<br> + but we can add a check for the version number if that ever happens<br> + (seems highly unlikely).<br> +<br> +Resource/Init/pdf_font.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-16 09:20:44 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cf58dd08435d89e5f205127c518595c0d7441535">cf58dd08435d89e5f205127c518595c0d7441535</a> +<blockquote> +<p> + Documentation - describe the ink_cov device<br> +<br> + Following up from a question on Stack Overflow, the ink_cov device isn't<br> + actually described anywhere. Add a description of the device and how its<br> + output differs from the inkcov device.<br> +<br> + At the same time, add the inkcov device(s) to the table of contents in<br> + devices.htm and also add the bit and bbox devices which were not listed<br> + in the TOC.<br> +<br> +doc/Devices.htm<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-15 08:25:08 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5fa1928af0eb110115d34eb4c43bb529dda6f697">5fa1928af0eb110115d34eb4c43bb529dda6f697</a> +<blockquote> +<p> + PDF interpreter - synthesise appearance for text Widget comb fields<br> +<br> + Bug #700967 "Warning Combed form fields are not yet implemented"<br> +<br> + Comb fields draw a string into a series of 'combs' or boxes, one<br> + character per box. As usual there are no guidelines in the specification<br> + as to how to draw the individual characters.<br> +<br> + I've chosen to centre each character in the box it is draw in, because<br> + drawing it from the origin of the box tends to cause collisions with the<br> + vertical/horizontal lines delineating the box itself (in the one example<br> + file I have). This may cause slightly odd appearance if a field uses<br> + mixed upper/lower case, as the text will jump up and down vertically.<br> +<br> + The example file supplied has a fault, one of the comb fields has a<br> + value (/V) string which is longer than the /MaxLen value for the field.<br> + This indicates to me a fault with the form filling application which<br> + should not permit this. Acrobat truncates the string, I've chosen to<br> + not render the string at all, and emit a warning on the back channel.<br> +<br> + None of our test suite files show any differences at all; either we<br> + don't have an examples of this kind of field already, or they all have<br> + appearance streams.<br> +<br> +Resource/Init/pdf_ops.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-12 09:53:44 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6d8e1957175ec98443a6bc0d8c3cda6bfdced801">6d8e1957175ec98443a6bc0d8c3cda6bfdced801</a> +<blockquote> +<p> + Bug 700968: Fix TTF Format 4 (segmented) cmap parsing<br> +<br> + The format 4 parsing was incorrect, but in a manner only exposed by reading<br> + an out of spec cmap.<br> +<br> + The spec implies that the character codes in the cmap segments should be non-<br> + overlapping, and the segments should be in order of lowest-to-highest codes.<br> +<br> + We were imposing (*not* enforcing) that condition, but forcing the start code<br> + of the current segment to be greater than size of the range of codes we've<br> + already read. This, basically, has no effect on fonts that adhere correctly<br> + to the spec.<br> +<br> + The fonts embedded in the files for Bug 700968 do not conform to the spec. For<br> + example, the 'Z_C00002.tmp' font has the first 92 segments in the cmap with<br> + start code and end code both set to 33. The above imposing of the no-overlap<br> + and order of segments meant that when we got past those first 92 segments, we<br> + were forcibly using character codes 92 and upwards.<br> +<br> + Removing the code imposing those conditions causes these files to render<br> + correctly, and shows no regressions in our existing test suite.<br> +<br> +Resource/Init/gs_ttf.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-11 12:16:57 -0700 +</strong> +<br>Nancy Durgin <nancy.durgin@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=adc75668cc254ead4929748fdb5ca988353f91eb">adc75668cc254ead4929748fdb5ca988353f91eb</a> +<blockquote> +<p> + Change s_jbig2decode_release() to free the global context in some cases<br> +<br> + Basically, if state->global_struct is NULL, it means the library should<br> + free the global_ctx when it's done with it. This is the case when used in<br> + gpdf (C implementation of PDF).<br> +<br> + If the state->global_struct is non-NULL, then it is a memory-managed<br> + value that the interpreter will eventually clean up. This is the case<br> + when used in gs (PS implementation of PDF).<br> +<br> +base/sjbig2.c<br> +base/sjbig2_luratech.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-11 08:49:14 -0700 +</strong> +<br>Nancy Durgin <nancy.durgin@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fd3730fa8429f1ea58b2f5a5bfc1eecd3f835247">fd3730fa8429f1ea58b2f5a5bfc1eecd3f835247</a> +<blockquote> +<p> + Change s_jbig2decode_set_global_data to take a separate pointer for global_ctx<br> +<br> + This is so gpdf can pass NULL for the 'gd' pointer, since it doesn't care<br> + about garbage collection.<br> +<br> +base/sjbig2.c<br> +base/sjbig2.h<br> +base/sjbig2_luratech.c<br> +base/sjbig2_luratech.h<br> +psi/zfjbig2.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 14:23:39 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=06c920713e11bce9bd541bbf9bf294b2ba16aee8">06c920713e11bce9bd541bbf9bf294b2ba16aee8</a> +<blockquote> +<p> + Bug 700952: re-introduce over/underflow workaround<br> +<br> + Commit 355434f4b1bbe8c4f98cafad5a6868aa2f0eaae1 reverted a workaround that<br> + compensated for over/underflow in Freetype's TTF hinting (related to freedom<br> + and projection vector calculations). That problem no longer exists in recent<br> + Freetype releases, and the workaround actually caused other issues to occur<br> + with hinting.<br> +<br> + What wasn't obvious was that the workaround also protected over/underflow<br> + issues relating to the unitsPerEm value.<br> +<br> + So this re-instates the workaround, but bases the decision on how the final<br> + scale is distributing between the Freetype "size" and the Freetype matrix on<br> + the unitsPerEm value (this is relevant for all font types as, for non-TTF,<br> + font types, Freetype derives the unitsPerEm from the FontMatrix (for PS type<br> + fonts).<br> +<br> + Also fixes Bug 700875<br> +<br> +base/fapi_ft.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 14:51:12 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=35d9fc4d2a9dd85fc8497cb68389ec6eded73fcb">35d9fc4d2a9dd85fc8497cb68389ec6eded73fcb</a> +<blockquote> +<p> + Update the copyright string.<br> +<br> +base/gscdefs.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 13:54:57 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=08b91a2141df36d2f733e1822601ad06941674f2">08b91a2141df36d2f733e1822601ad06941674f2</a> +<blockquote> +<p> + Detect system jbig2dec library using pkg-config if available.<br> +<br> + Otherwise fall back to traditional presence checking.<br> +<br> +configure.ac<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 20:06:04 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9f111ddc1cdb3cee329fb71e6ce4fd31c150f039">9f111ddc1cdb3cee329fb71e6ce4fd31c150f039</a> +<blockquote> +<p> + jbig2dec: Improve jbig2dec-specific gitignore.<br> +<br> +jbig2dec/.gitignore<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 13:48:05 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d72c6cdcd686a7dd0836f8a3afc4e23b5bb45144">d72c6cdcd686a7dd0836f8a3afc4e23b5bb45144</a> +<blockquote> +<p> + jbig2dec: Add pkg-config file and allow for it to be installed.<br> +<br> +jbig2dec/Makefile.am<br> +jbig2dec/configure.ac.in<br> +jbig2dec/jbig2dec.pc.in<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 18:23:26 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=300dd807b47d48b7b8368ca7b6db3db0312fa19b">300dd807b47d48b7b8368ca7b6db3db0312fa19b</a> +<blockquote> +<p> + jbig2dec: Check that header version matches library version.<br> +<br> +jbig2dec/jbig2.c<br> +jbig2dec/jbig2.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 18:00:35 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a2f646ac8a07e7d019ddcb9e0ca2bdff1f5c740f">a2f646ac8a07e7d019ddcb9e0ca2bdff1f5c740f</a> +<blockquote> +<p> + jbig2dec: Expose version number in header.<br> +<br> + Since the version number should only be specified in one location,<br> + the public jbig2dec header, autogen.sh will not regenrate the<br> + autoconf input file configure.ac.<br> +<br> +jbig2dec/autogen.sh<br> +jbig2dec/config_win32.h<br> +jbig2dec/configure.ac.in<br> +jbig2dec/jbig2.h<br> +jbig2dec/jbig2dec.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 13:44:23 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=90e56e3d9195f1aa19977629f2d3d3b4ec4d72cf">90e56e3d9195f1aa19977629f2d3d3b4ec4d72cf</a> +<blockquote> +<p> + jbig2dec: Add empty m4 directory to silence libtool warning.<br> +<br> +jbig2dec/Makefile.am<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 13:40:08 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cb4d8dee4974e85b8c54f553520bded6fabd7b74">cb4d8dee4974e85b8c54f553520bded6fabd7b74</a> +<blockquote> +<p> + jbig2dec: Silence automake warning about setting CFLAGS directly.<br> +<br> + Setting AM_CFLAGS is added to CFLAGS, adding the wanted XCFLAGS.<br> +<br> +jbig2dec/Makefile.am<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 13:39:05 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f25171c4fc2a5e7cd6bd9ab0b96a5133c038425d">f25171c4fc2a5e7cd6bd9ab0b96a5133c038425d</a> +<blockquote> +<p> + jbig2dec: Silence automake warning about ar use.<br> +<br> +jbig2dec/configure.ac<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-05 18:09:20 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9f1959fb44a4da0506c8ef7a8cbb0ccbef4cceea">9f1959fb44a4da0506c8ef7a8cbb0ccbef4cceea</a> +<blockquote> +<p> + jbig2dec: Fix bug where realloc returns NULL.<br> +<br> +jbig2dec/jbig2_image.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 05:11:16 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=67c9175c4a601a447b22e84251ec8c33ac827277">67c9175c4a601a447b22e84251ec8c33ac827277</a> +<blockquote> +<p> + jbig2: Avoid integer overflow in custom allocator.<br> +<br> +base/sjbig2.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-10 05:10:29 +0800 +</strong> +<br>Sebastian Rasmussen <sebras@gmail.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a69dd377c6f07e08ea4f895eabb974c92adccab4">a69dd377c6f07e08ea4f895eabb974c92adccab4</a> +<blockquote> +<p> + jbig2: Print messages from jbig2dec, do not just count them.<br> +<br> +base/sjbig2.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-03 11:01:18 -0700 +</strong> +<br>Ray Johnston <ray.johnston@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1fb3a69df53754f6a000152606f52b2f4a658b97">1fb3a69df53754f6a000152606f52b2f4a658b97</a> +<blockquote> +<p> + Fix crash reported by customer #531 with multi-threaded rendering.<br> +<br> + This was a race condition where threads were continuing to be started<br> + while we were tearing threads down. This doesn't occur with most usages<br> + because we render the entire page, but with the customer's device, it<br> + stops reading before the last line, but the multi-threading rendering<br> + logic tried to keep starting threads (up to NumRenderingThreads) to<br> + have later bands available.<br> +<br> + The solution is to wait for all threads to be in the "THREAD_DONE"<br> + state before freeing the threads.<br> +<br> + Also, since the color_usage_array of the main thread is shared by the<br> + rendering threads, wait until the threads are shut down before freeing<br> + that.<br> +<br> +base/gxclist.c<br> +base/gxclthrd.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-19 13:49:49 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d9055d0a350ca7681fb8f4854ed4f1c3bf7ed570">d9055d0a350ca7681fb8f4854ed4f1c3bf7ed570</a> +<blockquote> +<p> + Bring master up to date with 9.27 release branch<br> +<br> + Product string, dates etc for 9.27 release candidate<br> +<br> + News and changelog for 9.27 release candidate<br> +<br> + Update product string, dates etc for 9.27 release<br> +<br> + News/History9.htm revisions also.<br> +<br> +base/version.mak<br> +doc/DLL.htm<br> +doc/Deprecated.htm<br> +doc/Develop.htm<br> +doc/Devices.htm<br> +doc/Drivers.htm<br> +doc/Fonts.htm<br> +doc/History9.htm<br> +doc/Install.htm<br> +doc/Internal.htm<br> +doc/Language.htm<br> +doc/Lib.htm<br> +doc/Make.htm<br> +doc/News.htm<br> +doc/Ps-style.htm<br> +doc/Ps2epsi.htm<br> +doc/Psfiles.htm<br> +doc/Readme.htm<br> +doc/Release.htm<br> +doc/SavedPages.htm<br> +doc/Source.htm<br> +doc/Unix-lpr.htm<br> +doc/Use.htm<br> +doc/VectorDevices.htm<br> +doc/WhatIsGS.htm<br> +doc/gs-vms.hlp<br> +doc/sample_downscale_device.htm<br> +doc/subclass.htm<br> +doc/thirdparty.htm<br> +man/dvipdf.1<br> +man/gs.1<br> +man/gslp.1<br> +man/gsnd.1<br> +man/pdf2dsc.1<br> +man/pdf2ps.1<br> +man/pf2afm.1<br> +man/pfbtopfa.1<br> +man/printafm.1<br> +man/ps2ascii.1<br> +man/ps2epsi.1<br> +man/ps2pdf.1<br> +man/ps2pdfwr.1<br> +man/ps2ps.1<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-04 10:44:50 +0100 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=12e31a72ffe1d2da30bf2c1976795b72ccd320b2">12e31a72ffe1d2da30bf2c1976795b72ccd320b2</a> +<blockquote> +<p> + Update jbig2dec stuff for 0.16 release<br> +<br> +jbig2dec/CHANGES<br> +jbig2dec/config_win32.h<br> +jbig2dec/configure.ac<br> +jbig2dec/jbig2dec.1<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-03 03:28:01 -0700 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=76c6de5428936c8fdb7269d7fcc31d4bdc83d745">76c6de5428936c8fdb7269d7fcc31d4bdc83d745</a> +<blockquote> +<p> + Fix problems with "typedef struct foo_s foo;" redefinitions.<br> +<br> + In the header revamp, I'd left various places where we<br> + use the above formulation in more than one location. This<br> + is fine with all the C compilers I tested it on, but seems<br> + to update gcc 4.1.2.<br> +<br> + This effect can be seen on later gcc's by using<br> + "-std=gnu89 -pedantic".<br> +<br> + This commit tweaks the code to avoid redefinitions of this<br> + kind.<br> +<br> +base/gsfont.h<br> +base/gsgdata.h<br> +base/gspath.h<br> +base/gspenum.h<br> +base/gxchar.h<br> +base/gxdevcli.h<br> +base/gxfont.h<br> +base/gxiodev.h<br> +base/gxpath.h<br> +base/gxtext.h<br> +base/lib.mak<br> +psi/imemory.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-03 08:37:41 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7146b7292e27acc54d23b48472f6851ae9b51d8c">7146b7292e27acc54d23b48472f6851ae9b51d8c</a> +<blockquote> +<p> + Fix PDFX_def.ps<br> +<br> + Bug #700942<br> +<br> + For some reason Git did a merge with this file when I made the change,<br> + and it messed it up. Since we don't test these files, it didn't get<br> + noticed.<br> +<br> +lib/PDFX_def.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-02 10:55:27 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2c97be9f328babb7b544ab3610e6fce05e30cdc8">2c97be9f328babb7b544ab3610e6fce05e30cdc8</a> +<blockquote> +<p> + pdfwrite - change the example PDF/A and PDF/X scripts<br> +<br> + From Bug #700930 "Typo in example command for PDF/X-3 in VectorDevices.htm"<br> +<br> + The reporter claimed that the (mis-spelled) command didn't work, which<br> + was not surprising, since it contained a typo. After fixing the<br> + documentation the reporter claimed that the command didn't work. This<br> + is true and was missed because of the misleading title.<br> +<br> + The PDFX_def.ps file was mistakenly pulling the ProcessColorModel from<br> + systemdict, which would only be set if this was set on the command line.<br> + The real problem is the fact that our setpagedevice/currentpagedevice<br> + code doesn't truly reflect the device setup, so changes to the<br> + ProcessColorModel caused by setting ColorConversionStrategy are not<br> + reflected in the values returned by currentpagedevice.<br> +<br> + This commit updates PDFX_def.ps to chaeck the ColorConversionStrategy<br> + instead, which is more reliable, and then use the ProcessColorModel<br> + from the currentpagedevice as a fallback if ColorConversionStrategy<br> + is not set. (actually this should not be possible)<br> +<br> + Update PDFA_def.ps similarly; although it was using the currentpagedvice<br> + this is not a reliable method.<br> +<br> + Finally; reformat the files, add some extra comments describing what the<br> + code is doing, make it clearer that these files *should* be customised<br> + and add additional some basic instruction on customising them.<br> +<br> +lib/PDFA_def.ps<br> +lib/PDFX_def.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-02 08:26:09 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=978b03b453245c2a48abaee5addea3b7e025a2ed">978b03b453245c2a48abaee5addea3b7e025a2ed</a> +<blockquote> +<p> + Fix another typo.<br> +<br> + HTML is annoyingly impossible to spell-check :-(<br> +<br> +doc/VectorDevices.htm<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-01 16:15:21 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2983be3f871e480b6567f5ce5c16206a026851fe">2983be3f871e480b6567f5ce5c16206a026851fe</a> +<blockquote> +<p> + PS interpreter - prevent user code overriding some commad line switches<br> +<br> + Bug #700935 "defining BATCH causes typecheck in ifelse"<br> +<br> + A (surprisingly large) number of command line switches are checked at<br> + various points in gs_init.ps, but use the 'current' definition of the<br> + key, rather than explicitly checking systemdict, which is where the<br> + command line controls are stored.<br> +<br> + This meant that user code could (deliberately or accidentally) override<br> + the system definition and cause errors or unexpected behaviour.<br> +<br> +Resource/Init/gs_init.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-01 16:12:33 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=34a94a5d72f8a339cad4c2e2140519c33b58de79">34a94a5d72f8a339cad4c2e2140519c33b58de79</a> +<blockquote> +<p> + tiffsep devices - add TIFFDateTime to get_params<br> +<br> + We need to add this parameter to both put_params and get_params, or it<br> + will not work properly.<br> +<br> +devices/gdevtsep.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-01 13:30:57 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=87e4b35c9fc15434d710f86aa265501cad61c34f">87e4b35c9fc15434d710f86aa265501cad61c34f</a> +<blockquote> +<p> + Tiff devices - Honour the TIFFDateTime parameter<br> +<br> + The TIFFDateTime switch can be used to disable writing the date and<br> + time into the tags of TIFF files. However, the tiffg3, tiffg4, tiffsep<br> + and tiffsep1 devices weren't honouring the parameter.<br> +<br> + I believe this also affected the tiff32 and tiff8 devices, all the<br> + tiffscaled devices and teh tiffcrle device.<br> +<br> + Although gdevtfax.c read the parameter, it didn't transfer it to the<br> + devcie structure. The tiffsep and tiffsep1 devices didn't even read it.<br> +<br> + I can't help thinking that having our tiff support spread over 19<br> + different devices and 3 source files<br> +<br> +devices/gdevtfax.c<br> +devices/gdevtsep.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-01 10:58:11 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b987c511229ba0b70e6a7691366d530fa8db7444">b987c511229ba0b70e6a7691366d530fa8db7444</a> +<blockquote> +<p> + pdfwrite - completely remove the old colour management<br> +<br> + Also remove all references (I hope) from the documentation.<br> +<br> + While we're changing the docs, remove references to ps2pdf where we are<br> + really referring to pdfwrite, rewrite the information on LZW Encoding,<br> + update the 'Opitimize' distiller param note, add some covering words<br> + about the faxt that pdfwrite doesn't permit the full range of options<br> + in the LCMS2 implementation that rendering devices do, note that the<br> + example PDFX_def.ps needs to be modified (cribbed from PDF/A).<br> +<br> +devices/vector/gdevpdfg.c<br> +devices/vector/gdevpdfi.c<br> +devices/vector/gdevpdfp.c<br> +devices/vector/gdevpsdf.h<br> +doc/VectorDevices.htm<br> +<p> +</blockquote> +<hr> +<p><strong>2019-04-01 08:20:52 +0100 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f5bd9757cffeb8b173cdde161b39abd381e325c3">f5bd9757cffeb8b173cdde161b39abd381e325c3</a> +<blockquote> +<p> + Documentation changes<br> +<br> + Bug #700930 "Ghostscript - Typo in example command for PDF/X-3 in VectorDevices.htm"<br> +<br> +doc/VectorDevices.htm<br> +lib/PDFX_def.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-29 15:43:14 +0000 +</strong> +<br>Robin Watts <Robin.Watts@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=086390943b223cd726d7f63ad076b48e57ceae0f">086390943b223cd726d7f63ad076b48e57ceae0f</a> +<blockquote> +<p> + Fix Downscaler ETS brokenness.<br> +<br> + We are only supposed to use ETS if requested. We pass in a flag to<br> + say whether to use it - probably best, on balance, not to ignore it.<br> +<br> +base/gxdownscale.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-28 10:36:53 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3929dbaed570ba58cccbf600ba58158ab4fafd8a">3929dbaed570ba58cccbf600ba58158ab4fafd8a</a> +<blockquote> +<p> + Revise gs.c to use the gsapi API.<br> +<br> + It's probably better if our own code reflects the way we recommend others to<br> + code.<br> +<br> +psi/gs.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-28 09:21:37 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a87c116174ef574465ab12493ef6d0c575bda60d">a87c116174ef574465ab12493ef6d0c575bda60d</a> +<blockquote> +<p> + Fix sefault with 'so' build.<br> +<br> + The loaders were passing an unitialise pointer into gsapi_new_instance()<br> + meaning we might try to dereference the pointer to get to the shared portion<br> + of the library context.<br> +<br> + Initialise the pointer to NULL.<br> +<br> + Apply the same fix to everywhere that uses gsapi_new_instance.<br> +<br> +pcl/pl/plwmainc.c<br> +pcl/pl/realmain.c<br> +psi/apitest.c<br> +psi/dmmain.c<br> +psi/dpmain.c<br> +psi/dwmain.c<br> +psi/dwmainc.c<br> +psi/dxmain.c<br> +psi/dxmainc.c<br> +toolbin/halftone/gen_stochastic/gen_stochastic.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-27 14:41:13 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9723b898561c3cd7b9f207c9976994671940df56">9723b898561c3cd7b9f207c9976994671940df56</a> +<blockquote> +<p> + Update thirdparty.htm: Freetype and jbig2dec versions<br> +<br> +doc/thirdparty.htm<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-27 08:08:04 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a21912a4c7c2a0cbc79c1a86df77b63bcae850fb">a21912a4c7c2a0cbc79c1a86df77b63bcae850fb</a> +<blockquote> +<p> + Add license file for cups/libcups<br> +<br> +cups/LICENSE.txt<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-26 16:26:11 +0000 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cdd481e5406b8fd07f0cc9b771adfd6877028d96">cdd481e5406b8fd07f0cc9b771adfd6877028d96</a> +<blockquote> +<p> + Fix valgrind error with PXL patterns and high level devices<br> +<br> + Bug #700573 " Uninitialised colors used in path plotting"<br> +<br> + When the current colour space is a pattern, and the saved high level<br> + colour space is also a pattern, we were checking every possible<br> + component of ccolor.paint.values in both spaces against each other.<br> +<br> + The problem is that in gx_hld_save_color we set almost all the values to<br> + 0, but then copy a single uninitialised value into the 0th index.<br> +<br> + This leads to a valgrind error. Henry points out that the PostScript<br> + interpreter has a hack specifically to work around this in zcolor.c,<br> + zsetcolor() at around line 313.<br> +<br> + This is wasteful, its far better (IMO) to rearrange the logic in<br> + gx_hld_saved_color_equal(), we already bail out early if the colour<br> + spaces are not equal. If the spaces are patterns, then there's no point<br> + in comparing the device components, instead compare the pattern IDs<br> + *before* we compare the device components, if they are the same then<br> + return true, if they are different return false.<br> +<br> + This avoids us having to check 2 sets of 64 values, and also avoids us<br> + having to set 64 values every time we create a pattern.<br> +<br> +base/gxhldevc.c<br> +psi/zcolor.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-26 15:14:49 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=519326a98c1d2172da280305fef0a3a52ddc65bc">519326a98c1d2172da280305fef0a3a52ddc65bc</a> +<blockquote> +<p> + Tweak the pcl/LICENSE to make a little more sense<br> +<br> + It hadn't been revised really for the "new" directory structure.<br> +<br> + It will probably benefit from a more substantial revisit, but for now, this<br> + makes it less confusing.<br> +<br> +pcl/LICENSE<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-26 09:23:56 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=db96dc02a83e45d2997315e52e77cb4c283c09ce">db96dc02a83e45d2997315e52e77cb4c283c09ce</a> +<blockquote> +<p> + Reword the 'greeting' to reflect the open source license.<br> +<br> +Resource/Init/gs_init.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-26 09:13:42 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0371b3cef0e28fa603437faf983c7be8f2160214">0371b3cef0e28fa603437faf983c7be8f2160214</a> +<blockquote> +<p> + Fix 'greeting' and include COPYING in install<br> +<br> + The greeting message still referenced the obsolete 'PUBLIC' file. And<br> + doc/COPYING was missing from the list of files for install.<br> +<br> +Resource/Init/gs_init.ps<br> +base/unixinst.mak<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-26 10:51:36 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=686204e73479a5fde722ca00a851cfb7f0d4186a">686204e73479a5fde722ca00a851cfb7f0d4186a</a> +<blockquote> +<p> + Bug 700897: fix validation of -M and -N parameters.<br> +<br> +psi/imainarg.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-25 19:35:07 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=81d801a07450227eee573aac5fc9259862b4a568">81d801a07450227eee573aac5fc9259862b4a568</a> +<blockquote> +<p> + Fix tiffsep_cmyk_cs_to_cm in tiffsep device<br> +<br> + When we were doing just a single or a couple spot colorants using something like<br> + -c "<< /SeparationColorNames [(Pantone 137 CVU)] /SeparationOrder [(Pantone 137 CVU)]>><br> + setpagedevice" the colorants mappings were not getting properly cleared by<br> + tiffsep_cmyk_cs_to_cm causing fillpage to not clear out the page.<br> +<br> +devices/gdevtsep.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-25 09:01:51 +0000 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c70dc7911aaf559eeec0ced48f8504e24ba39b8a">c70dc7911aaf559eeec0ced48f8504e24ba39b8a</a> +<blockquote> +<p> + Coverity ID 337243 - remove dead code<br> +<br> +devices/vector/gdevpdfp.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-23 10:29:59 +0000 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4dc1cb5197292f3fa7548353c4208f507ca3b310">4dc1cb5197292f3fa7548353c4208f507ca3b310</a> +<blockquote> +<p> + Another trailing white space fix<br> +<br> +base/gdevp14.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-23 10:26:29 +0000 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8946e4418257a99ea029283405bc23b75a02e0a5">8946e4418257a99ea029283405bc23b75a02e0a5</a> +<blockquote> +<p> + PDF Interpreter - fix leading and trailing white spaces in pdf_draw.ps<br> +<br> + Commit 09c656e066777bd69bbd1902e6163fe3a8a39406 included some<br> + leading and trailing white spaces.<br> +<br> +Resource/Init/pdf_draw.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-20 13:55:54 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f1fccd62b5d1010ecec2817b1b67f3b74b145d02">f1fccd62b5d1010ecec2817b1b67f3b74b145d02</a> +<blockquote> +<p> + tiffscaled: correctly select the downscaler when using ETS<br> +<br> + When tiffscaled uses ETS for the halftoning, and it's downscaling, we have to<br> + select the downscaling "core" based on the factor.<br> +<br> +base/gxdownscale.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-19 17:49:14 +0100 +</strong> +<br>Knut Petersen <knut_petersen@t-online.de><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=eec855c9baeaa73c0208ed439fbbf1a0d48a447e">eec855c9baeaa73c0208ed439fbbf1a0d48a447e</a> +<blockquote> +<p> + Fix e005c87e09f67f37ce4ae2f80f24cf9182e86d8d<br> +<br> + Signed-off-by: Knut Petersen <knut_petersen@t-online.de><br> +<br> +Resource/Init/pdf_font.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-19 10:06:38 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2d67148ab19d5e278ec4dbe9929839a37f9961b7">2d67148ab19d5e278ec4dbe9929839a37f9961b7</a> +<blockquote> +<p> + Bug 700744 Documentation typo.<br> +<br> +doc/GS9_Color_Management.pdf<br> +doc/GS9_Color_Management.tex<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-19 08:32:46 -0700 +</strong> +<br>Michael Vrhel <michael.vrhel@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=09c656e066777bd69bbd1902e6163fe3a8a39406">09c656e066777bd69bbd1902e6163fe3a8a39406</a> +<blockquote> +<p> + Bug 700686 Matte premultiplied images<br> +<br> + The undoing of the matte pre-blend must occur in the image color space. As such<br> + the group that the interpreter pushes must be that color space and we must make sure<br> + that we undo the pre-blend before any conversions for the group color space.<br> +<br> +Resource/Init/pdf_draw.ps<br> +base/gdevp14.c<br> +base/gxblend.c<br> +base/gxblend.h<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-19 09:25:48 -0700 +</strong> +<br>Ray Johnston <ray.johnston@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=db24f253409d5d085c2760c814c3e1d3fa2dac59">db24f253409d5d085c2760c814c3e1d3fa2dac59</a> +<blockquote> +<p> + Fix lib/pdf2dsc.ps to use documented Ghostscript pdf procedures.<br> +<br> + We eliminated GS_PDF_ProcSet and pdfdict, but runpdfbegin, dopdfpages,<br> + and runpdfend are still available.<br> +<br> +lib/pdf2dsc.ps<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-19 08:34:05 -0700 +</strong> +<br>Ray Johnston <ray.johnston@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=332c74c6ffe84acfc0fa80a99f6590a4be9f561b">332c74c6ffe84acfc0fa80a99f6590a4be9f561b</a> +<blockquote> +<p> + Fix bug 700719: SEGV with very large XStep/YStep and transparent patterns.<br> +<br> + At high resolutions, the bonkers XStep/YStep for the pattern could confuse<br> + the tile_by_steps_trans logic, and could overflow a 32-bit signed int causing<br> + a sign flip. Protect from this by checking to make sure we only fill within<br> + the fill_trans_buffer->rect.<br> +<br> +base/gxp1fill.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-19 14:35:43 +0000 +</strong> +<br>Ken Sharp <ken.sharp@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c5b92cc2dc9a20c8b6ba204f1e5a5e292bc53846">c5b92cc2dc9a20c8b6ba204f1e5a5e292bc53846</a> +<blockquote> +<p> + Fix FillOrder tag for the TiffG3 and TiffG4 devices<br> +<br> + Bug #700255 "Option FillOrder doesn't work anymore"<br> +<br> + Commit 0ef309305417776a9f8b8cd143fbf3c5e89456b2 added the FillOrder<br> + switch to the 'tiff' class of devices, but the fax Tiff devices already<br> + processed that switch, and the commit did not remove the processing<br> + from those devices.<br> +<br> + This led to us trying to us ending up with the parameter in the params<br> + list twice when we executed get_params (once from the tiff device<br> + processing and once from the tiff fax device processing).<br> +<br> + When we then next execute a 'put_param', the list has a duplicate<br> + entry for FillOrder. We stop processing when we find the first entry,<br> + which means the second entry never gets processed, leading to an<br> + unused entry in the list, and that throws an error.<br> +<br> + The simplest way to fix this is to remove the duplicate 'get_param()'<br> + processing from the tiff fax devices, leaving it up to the generic<br> + Tiff device.<br> +<br> +devices/gdevtfax.c<br> +<p> +</blockquote> +<hr> +<p><strong>2019-03-19 13:12:25 +0000 +</strong> +<br>Chris Liddell <chris.liddell@artifex.com><br> +<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5eebbe1be2b097e541b14fecbd5a154c2cba1519">5eebbe1be2b097e541b14fecbd5a154c2cba1519</a> +<blockquote> +<p> + Bump version number for release<br> +<br> +Resource/Init/gs_init.ps<br> +base/version.mak<br> +<p> +</blockquote> +<hr> +<hr size=20> <h3><a name="9.27_changelog"></a>Changelog</h3> <p><strong>2019-04-03 09:27:46 +0100 </strong> diff --git a/doc/News.htm b/doc/News.htm index bfdae91ac..6169627ad 100644 --- a/doc/News.htm +++ b/doc/News.htm @@ -100,26 +100,19 @@ overview</a>. <p> Highlights in this release include: <ul> <li> -<p>We have extensively cleaned up the Postscript name space: removing access to internal -and/or undocumented Postscript operators, procedures and data. This has benefits for security -and maintainability. -</li> -<li> -<p>We have added a new "product": "gpdl". This is a rethink/redesign of the old -"language_switch" product (pspcl6), and includes all the interpreters we -develop based on the Ghostscript graphics library: Postscript, PDF, PCL6, PXL and XPS. -This is experimental, and should be considered of beta testing quality, and thus is not -built by default: it can be built by using the "experimental" target. -<p><code>gpdl</code> uses a heuristic to judge the file type being passed to it. In general, -it supports most of the widely used command line options for each interpreter, but -compatibility is not complete (the practicalities of swapping interpreters means it is -unlikely that full parity of command line options will be possible). -</li> -<li> -<p>Fontmap can now reference invidual fonts in a TrueType Collection for font subsitution. -Previously, a Fontmap entry could only reference a TrueType collection and use the default -(first) font. Now, the Fontmap syntax allows for specifying a specific index in a TTC. -See the comments at the top of (the default) Fontmap.GS for details. +<p>The file access control capability (enable with <code>-dSAFER</code>) has been +completely rewritten, with a ground-up rethink of the design. For more details, +see: <a href="Use.htm#Safer">SAFER</a>. +<p>It is important to note that <code>-dSAFER</code> now <strong>only</strong> enables +the file access controls, and no longer applies restrictions to standard Postscript +functionality (specifically, restrictions on <code>setpagedevice</code>. If your +application relies on these Postscript restrictions, see <a href="Use.htm#OldSafer">OLDSAFER</a>, +and please get in touch, as we do plan to remove those Postscript restrictions +unless we have reason not to. +<p><strong>IMPORTANT:</strong> File access controls are now enabled by default. In +order to run Ghostscript without these controls, see <a href="Use.htm#NoSafer">NOSAFER</a> +<p><strong>Important Note for Windows Users</strong>: See below under +<a href="#28_Incompatible_changes">Incompatible Changes</a> </li> <li> <p>IMPORTANT: We are in the process of forking LittleCMS. LCMS2 is not thread safe, and @@ -134,9 +127,24 @@ Our fork will be available as its own package separately from Ghostscript (and M </ul> <p>For a list of open issues, or to report problems, please visit <a href="http://bugs.ghostscript.com/">bugs.ghostscript.com</a>. -<h3><a name="9.27_Incompatible_changes"></a>Incompatible changes</h3> +<h3><a name="9.28_Incompatible_changes"></a>Incompatible changes</h3> <ul> <li> +<p>There are a couple of subtle incompatibilities between the old and new SAFER +implementations. Firstly, as mentioned above, SAFER now leaves standard Postcript +functionality unchanged (except for the file access limitations). Secondly, +the interaction with <code>save</code>/<code>restore</code> operations, see +<a href="Use.htm#Safer">SAFER</a>. +<p><strong>Important Note for Windows Users</strong>: +<br> +The file/path pattern matching is case sensitive, even on Windows. This is a +change in behaviour compared to the old code which, on Windows, was case +<i>in</i>sensitive. This is in recognition of changes in Windows behaviour, +in that it now supports (although does not enforce) case sensitivity. +</li> +<li> +<p>The following is not strictly speaking new to 9.28, as not much has changed since +9.27 in this area, but for those who don't upgrade with every release: <p>The process of "tidying" the Postscript name space should have removed only non-standard and undocumented operators. Nevertheless, it is possible that any integrations or utilities that rely on those non-standard and undocumented @@ -150,7 +158,7 @@ still work as previously for Postscript files. For PDF files, users are encourag at <a href="https://www.mupdf.com">MuPDF</a>. </li> </ul> -<h3><a name="9.27_changelog"></a>Changelog</h3> +<h3><a name="9.28_changelog"></a>Changelog</h3> <p>See the <a href="History9.htm">history file</a> for complete log of changes. diff --git a/doc/Use.htm b/doc/Use.htm index 0b60b6a06..5b6889b17 100644 --- a/doc/Use.htm +++ b/doc/Use.htm @@ -3433,6 +3433,7 @@ should be used so that the restore between jobs will restore global VM as expected.</dd> </dl> +<a name="NoSafer"></a> <dl> <dt><code>-dNOSAFER</code> (equivalent to <code>-dDELAYSAFER</code>).</dt> <dd>This flag disables SAFER mode until the <code>.setsafe</code> |