summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2019-08-15 11:39:51 +0100
committerChris Liddell <chris.liddell@artifex.com>2019-10-15 11:54:39 +0100
commit8a3309451ded2335b7f7ab5ebf1c19eebad8b32c (patch)
treed1fdf4bdd6927f0abea4411b70b60dce6e3a31de
parentac5c8747c9f9e2710a315ff25d41a7b9a592b583 (diff)
downloadghostpdl-8a3309451ded2335b7f7ab5ebf1c19eebad8b32c.tar.gz
Bring master up to date with 9.50 branch
docs, dates etc Dates and versions for 9.28 RC 1 Date for 9.28 rc2 Doc updates, changelog, news etc Update to note explicitly case sensitivity on Windsows In News.htm and History9.htm Dates, docs, etc for 9.28 rc3 Dates and docs for 9.28 rc4 Small changelog tweak Change version to 9.50 Update changelog Fix a mistake in the news section Dates etc for 9.50 release Plus a comment on going to 9.50, rather than 9.28.
-rw-r--r--base/version.mak2
-rw-r--r--doc/DLL.htm2
-rw-r--r--doc/Deprecated.htm2
-rw-r--r--doc/Develop.htm2
-rw-r--r--doc/Devices.htm2
-rw-r--r--doc/Drivers.htm2
-rw-r--r--doc/Fonts.htm2
-rw-r--r--doc/History9.htm7468
-rw-r--r--doc/Install.htm2
-rw-r--r--doc/Internal.htm2
-rw-r--r--doc/Language.htm2
-rw-r--r--doc/Lib.htm2
-rw-r--r--doc/Make.htm2
-rw-r--r--doc/News.htm68
-rw-r--r--doc/Ps-style.htm2
-rw-r--r--doc/Ps2epsi.htm2
-rw-r--r--doc/Psfiles.htm2
-rw-r--r--doc/Readme.htm2
-rw-r--r--doc/Release.htm2
-rw-r--r--doc/SavedPages.htm2
-rw-r--r--doc/Source.htm2
-rw-r--r--doc/Unix-lpr.htm2
-rw-r--r--doc/Use.htm3
-rw-r--r--doc/VectorDevices.htm2
-rw-r--r--doc/WhatIsGS.htm2
-rw-r--r--doc/gs-vms.hlp2
-rw-r--r--doc/sample_downscale_device.htm2
-rw-r--r--doc/subclass.htm2
-rw-r--r--doc/thirdparty.htm2
-rw-r--r--man/dvipdf.14
-rw-r--r--man/gs.14
-rw-r--r--man/gslp.14
-rw-r--r--man/gsnd.14
-rw-r--r--man/pdf2dsc.14
-rw-r--r--man/pdf2ps.14
-rw-r--r--man/pf2afm.14
-rw-r--r--man/pfbtopfa.14
-rw-r--r--man/printafm.14
-rw-r--r--man/ps2ascii.14
-rw-r--r--man/ps2epsi.14
-rw-r--r--man/ps2pdf.14
-rw-r--r--man/ps2pdfwr.14
-rw-r--r--man/ps2ps.14
43 files changed, 7539 insertions, 108 deletions
diff --git a/base/version.mak b/base/version.mak
index 0167dd1ff..88041f2df 100644
--- a/base/version.mak
+++ b/base/version.mak
@@ -18,7 +18,7 @@ GS_VERSION_MAJOR=9
GS_VERSION_MINOR=51
GS_VERSION_MINOR0=51
# Revision date: year x 10000 + month x 100 + day.
-GS_REVISIONDATE=20190815
+GS_REVISIONDATE=20191015
# Derived values
GS_VERSION=$(GS_VERSION_MAJOR)$(GS_VERSION_MINOR0)
GS_DOT_VERSION=$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR0)
diff --git a/doc/DLL.htm b/doc/DLL.htm
index 8bbc6b818..d4be60010 100644
--- a/doc/DLL.htm
+++ b/doc/DLL.htm
@@ -776,7 +776,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Deprecated.htm b/doc/Deprecated.htm
index 237fdec53..e5d96250e 100644
--- a/doc/Deprecated.htm
+++ b/doc/Deprecated.htm
@@ -5773,7 +5773,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Develop.htm b/doc/Develop.htm
index 1ed30305d..1a235635e 100644
--- a/doc/Develop.htm
+++ b/doc/Develop.htm
@@ -4773,7 +4773,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Devices.htm b/doc/Devices.htm
index 474b07101..3f123742b 100644
--- a/doc/Devices.htm
+++ b/doc/Devices.htm
@@ -2015,7 +2015,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Drivers.htm b/doc/Drivers.htm
index 08466e039..3ac03086c 100644
--- a/doc/Drivers.htm
+++ b/doc/Drivers.htm
@@ -3678,7 +3678,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Fonts.htm b/doc/Fonts.htm
index 2035556b3..f343b1c9c 100644
--- a/doc/Fonts.htm
+++ b/doc/Fonts.htm
@@ -357,7 +357,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/History9.htm b/doc/History9.htm
index 2a36012f7..020140dc3 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.50">Version 9.50 (2019-10-15)</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,29 @@ 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 &quot;-dNOSAFER&quot; option.
+<h2><a name="Version9.50"></a>Version 9.50 (2019-10-15)</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.
+<p>The change to version 9.50 (rather than the intended 9.28) follows recognition
+of the extent and importance of the file access control redesign/reimplementation
+outlined below.
</li>
<li>
-<p>We have added a new &quot;product&quot;: &quot;gpdl&quot;. This is a rethink/redesign of the old
-&quot;language_switch&quot; 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 &quot;experimental&quot; 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
@@ -171,25 +166,7446 @@ Our fork will be available as its own package separately from Ghostscript (and M
<li>
<p>The usual round of bug fixes, compatibility changes, and incremental improvements.
</li>
+<li>
+<p>Special thanks to Akira Kakuto, Paul Wessel, William Bader, Nelson H. F. Beebe and
+everyone else who put time and effort into testing this new release.
+</li>
</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.50_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>&sol;<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.50, 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 &quot;tidying&quot; 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
operators may stop working, or may change behaviour.
<p>If you encounter such a case, please contact us (either the #ghostscript IRC channel,
or the gs-devel mailing list would be best), and we'll work with you to either find an
-alternative solution.
+alternative solution or return the previous functionality, if there is genuinely no other
+option.
<p>One case we know this has occurred is GSView 5 (and earlier). GSView 5 support for PDF
files relied upon internal use only features which are no longer available. GSView 5 will
still work as previously for Postscript files. For PDF files, users are encouraged to look
at <a href="https://www.mupdf.com">MuPDF</a>.
</li>
</ul>
+<h3><a name="9.50_changelog"></a>Changelog</h3>
+<p><strong>2019-10-14 18:07:29 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f2e2a3fe85d64cabde82d0f6eb982643bc6e8427">f2e2a3fe85d64cabde82d0f6eb982643bc6e8427</a>
+<blockquote>
+<p>
+ Add words about .currentpathcontrolstate operator<br>
+<br>
+doc/Language.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-10-14 10:28:15 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ad5b08d8be2e7a91599d3bbbc6aa841144662239">ad5b08d8be2e7a91599d3bbbc6aa841144662239</a>
+<blockquote>
+<p>
+ Change version to 9.50<br>
+<br>
+Resource/Init/gs_init.ps<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-10-14 10:20:19 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1937e14f17e5de54b57d0e911e828639d197a08c">1937e14f17e5de54b57d0e911e828639d197a08c</a>
+<blockquote>
+<p>
+ Update docs on SAFER<br>
+<br>
+ to reflect that SAFER is now the default, and remove the comments about making<br>
+ SAFER the default &quot;in the future&quot;.<br>
+<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-10-10 09:29:48 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9c63f39ead4aab30addf213f0ab6843ac87b56cf">9c63f39ead4aab30addf213f0ab6843ac87b56cf</a>
+<blockquote>
+<p>
+ ps2write - restore missing %%PageTrailer comment<br>
+<br>
+ Bug #701659 &quot;Missing %%PageTrailer commen&quot;<br>
+<br>
+ An oversight in commit 96c381cce28c27eac182549441a6c5025b0dcdd6<br>
+ caused the comment to be omitted.<br>
+<br>
+devices/vector/gdevpdf.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-10-07 18:41:10 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1d89e1aa9cf65e5345a1f009b6d317db024719fe">1d89e1aa9cf65e5345a1f009b6d317db024719fe</a>
+<blockquote>
+<p>
+ Bug 701657: Allocate &quot;memory&quot; device in immovable gc memory<br>
+<br>
+ Devices are supposed to be allocated in memory that cannot relocate (i.e.<br>
+ non-gc memory or an immovable allocation). The memory device accessible from<br>
+ Postscript (makeimagedevice/makewordimagedevice) was being created in regular,<br>
+ relocatable gc memory.<br>
+<br>
+ This caused an invalid memory access when cleaning up subclassed devices, as the<br>
+ one device in the chain may have moved. So switch to using an immovable<br>
+ allocation.<br>
+<br>
+base/gsdevmem.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-10-02 00:01:17 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=458f715b0d59278f0788e0c89ee5eb04d48871ef">458f715b0d59278f0788e0c89ee5eb04d48871ef</a>
+<blockquote>
+<p>
+ Update jbig2dec stuff for 0.17 release.<br>
+<br>
+jbig2dec/CHANGES<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-10-01 10:35:48 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f8ba9e017cdfab836f62853629d75f484127342e">f8ba9e017cdfab836f62853629d75f484127342e</a>
+<blockquote>
+<p>
+ Fix memory corruption setting a halftone<br>
+<br>
+ When setting a new halftone in the graphics state, we try to re-use the data<br>
+ from the existing device halftone.<br>
+<br>
+ The problem is that the device halftone can have higher component indices than<br>
+ there are components in the new halftone we are creating. In this case, we can<br>
+ end up writing off the end of the components array for the new halftone<br>
+ structure.<br>
+<br>
+ Simply check that the new halftone has enough components before doing the<br>
+ duplication.<br>
+<br>
+base/gsht.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-30 13:40:35 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1681c7ebb5a338002d5f7dd8da9bffda675f0656">1681c7ebb5a338002d5f7dd8da9bffda675f0656</a>
+<blockquote>
+<p>
+ pdfwrite - don't honour /Producer key in DOCINFO pdfmark<br>
+<br>
+ Bug #701639 &quot;pdfwrite should not honour the /Producer key in DOCINFO pdfmark&quot;<br>
+<br>
+ The Producer in the document information dictionary (and XML Metadata)<br>
+ is defined quite clearly as the application which produced the PDF file<br>
+ from its native format.<br>
+<br>
+ Ghostscript uses the Producer key (if present in the pdfmark) to set<br>
+ the Producer, but it should not do so. Adobe Acrobat Distiller (at<br>
+ least the end user version) does not permit this value to be altered.<br>
+<br>
+ On reflection we can see why; in the case of a problem with a PDF file<br>
+ its important to know which application created it, and we should not<br>
+ let PostScript obscure that (we already do not pass the Producer<br>
+ information on when the input is PDF).<br>
+<br>
+ The code did already attempt to overwrite any Producer string which<br>
+ contained 'Distiller' (I have no idea why) and that code contained an<br>
+ error which could lead to an invalid Document Information dictionary<br>
+ being created.<br>
+<br>
+ This commit removes the ability for DOCINFO pdfmarks to alter the<br>
+ Producer, which obviously fixes the bug.<br>
+<br>
+ However..... it is actually important for our commercial customers to<br>
+ be able to set this value. A problem with a PDF file created by one of<br>
+ our customer's products should be reported to that customer, not us, as<br>
+ we will not be able to investigate the problem while our customer<br>
+ should be able to. At the very least our customer will know how to<br>
+ retrieve the configuration of Ghostscript being used.<br>
+<br>
+ So permit the commercial version of Ghostscript to set the /Producer<br>
+ from a pdfmark.<br>
+<br>
+devices/vector/gdevpdfm.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-30 09:16:28 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a27af00c8727ec4eaf0f4730963b8a81aab8590d">a27af00c8727ec4eaf0f4730963b8a81aab8590d</a>
+<blockquote>
+<p>
+ Small changelog tweak<br>
+<br>
+doc/History9.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-27 13:26:01 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b0574cdb5b427690ac8d95679930c9f6cc1bdffb">b0574cdb5b427690ac8d95679930c9f6cc1bdffb</a>
+<blockquote>
+<p>
+ Bug 701634: Correctly handle file name of &quot;\0&quot;<br>
+<br>
+ Attempting to open a file with a filename string starting with a NULL<br>
+ character should be treated the same as if the string was zero length.<br>
+<br>
+ Not doing so created a broken file object leading to several operations<br>
+ resulting in a segfault.<br>
+<br>
+ Also, add cleanup in the event of such an error, freeing memory allocated in<br>
+ preparing the gs stream object.<br>
+<br>
+base/sfxcommon.c<br>
+psi/zfile.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-26 10:47:01 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cce67ebf4c209ae3cbcc671e944596c64a3d7fc9">cce67ebf4c209ae3cbcc671e944596c64a3d7fc9</a>
+<blockquote>
+<p>
+ Revised comment for 8992f00edfd1c39154c013489de2a01d2e9a92ee<br>
+<br>
+ Make it clearer why the revised behaviour is required.<br>
+<br>
+base/gstiffio.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-26 09:34:02 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=24c9f7f4a8d3e85e572094b4aedddbeeb02d5ef1">24c9f7f4a8d3e85e572094b4aedddbeeb02d5ef1</a>
+<blockquote>
+<p>
+ Bug 701313: Disable libtiff callbacks when libtiff is shared<br>
+<br>
+ It seems that libtiff uses global variables to store the error/warning callbacks<br>
+ so if two callers in the exe are using the libtiff shared lib, very bad things<br>
+ happen (usually a segfault).<br>
+<br>
+ So, if that's how we're linked, set the callbacks to NULL.<br>
+<br>
+base/gstiffio.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-24 15:48:54 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c40963eb024265ab28f4f897401ad7a050ca9425">c40963eb024265ab28f4f897401ad7a050ca9425</a>
+<blockquote>
+<p>
+ Cope with .setsafe(global) being called when already 'SAFER'<br>
+<br>
+ As we default to SAFER file controls now, we want to cope with .setsafe and<br>
+ .setsafeglobal being called either when already SAFER, or called multiple times.<br>
+<br>
+ This means adding a .currentpathcontrolstate operator so we don't try to<br>
+ influence the path control lists after control is activated.<br>
+<br>
+Resource/Init/gs_init.ps<br>
+psi/zfile.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-24 09:18:47 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7d70bd4338291c99234dd0078b5cdc85178c0540">7d70bd4338291c99234dd0078b5cdc85178c0540</a>
+<blockquote>
+<p>
+ tiffsep(1): Cope with .tiff ending as well as .tif<br>
+<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-23 20:04:49 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2f713b99e1a626ba4b7b1be8cc715043bb4e0f0a">2f713b99e1a626ba4b7b1be8cc715043bb4e0f0a</a>
+<blockquote>
+<p>
+ Recast validate to use gs_file_name_check_separator.<br>
+<br>
+ Avoid using gp_file_name_directory_separator, as windows can<br>
+ have 2 different directory separators.<br>
+<br>
+base/gpmisc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-23 18:05:00 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=31df729a821d1683381493b96c2ecced9da1e5e2">31df729a821d1683381493b96c2ecced9da1e5e2</a>
+<blockquote>
+<p>
+ Remove spurious call to gp_validate_path_len()...<br>
+<br>
+ ...in gx_device_open_output_file()<br>
+<br>
+ There is no need to validate the path in gx_device_open_output_file() as it will<br>
+ be done at a lower level (gp_fopen) for paths that require it (we only validate<br>
+ *after* the Postscript style %device% paths have been expanded into 'real'<br>
+ paths).<br>
+<br>
+ This also interacts badly with the revised handling of formatted string<br>
+ file names, hence remove it.<br>
+<br>
+base/gsdevice.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-23 17:56:34 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ca553d6d3ec0fa1455cf400629e08db90658aa85">ca553d6d3ec0fa1455cf400629e08db90658aa85</a>
+<blockquote>
+<p>
+ Fix tiffsep(1) interaction with file permissions lists<br>
+<br>
+ The previous solution didn't quite work, when using formatted strings for<br>
+ output file names (i.e. output-%d.tif).<br>
+<br>
+ This adds a dedicated gs_remove_outputfile_control_path() to mirror<br>
+ gs_add_outputfile_control_path() and uses those for the dynamic adding and<br>
+ removing of separation output file names.<br>
+<br>
+base/gslibctx.c<br>
+base/gslibctx.h<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-23 17:11:47 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=205e2f529e6da569ec764ebb4aeddc41c66a8860">205e2f529e6da569ec764ebb4aeddc41c66a8860</a>
+<blockquote>
+<p>
+ Update path validation to accept multiple *'s as special case.<br>
+<br>
+ Previously we interpretted multiple *'s as meaning the same as<br>
+ single *'s. Now we use them to mean &quot;just those chars that<br>
+ might be created by the use of a %...{d,x,u,i,o,X} format<br>
+ specifier&quot;.<br>
+<br>
+base/gpmisc.c<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-23 16:41:09 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dd19ec5348723a5c70ff728911f856caa518166b">dd19ec5348723a5c70ff728911f856caa518166b</a>
+<blockquote>
+<p>
+ Improve OutputFile handling of %d etc.<br>
+<br>
+ Only accept %d (and friends) (as opposed to anything starting with %).<br>
+ Only accept legal combinations of flags/widths/precision etc.<br>
+ Generate a more conservative wildcard.<br>
+<br>
+base/gslibctx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-20 12:38:02 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=da7486fc4b00eee956200d45fb340dc62c8e3bcb">da7486fc4b00eee956200d45fb340dc62c8e3bcb</a>
+<blockquote>
+<p>
+ Slight improvement to &quot;permit-file-***&quot; parameter documentation.<br>
+<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-20 11:17:53 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0222263e4fe03b29e9eb4141f7866fa8261d416a">0222263e4fe03b29e9eb4141f7866fa8261d416a</a>
+<blockquote>
+<p>
+ Fix tiffsep and tiffsep1 with new file access control and SAFER mode<br>
+<br>
+ The tiffsep and tiffsep1 synthesize output file names with the outputfile<br>
+ and the separation color name, but the 'open' of these filenames would<br>
+ fail since they were not included on the permit_file_writing list.<br>
+ Add the full filename before opening, and remove the names after closing.<br>
+<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-20 11:53:10 -0700
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=41d79063acee7244f5990d2a8e19c567e24051af">41d79063acee7244f5990d2a8e19c567e24051af</a>
+<blockquote>
+<p>
+ Squash stupid const warning.<br>
+<br>
+base/gslibctx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-20 19:42:01 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b58f45daa9007f482a49132cbfaa47c8b86ce7d5">b58f45daa9007f482a49132cbfaa47c8b86ce7d5</a>
+<blockquote>
+<p>
+ Squash some &quot;const&quot; warnings.<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-20 17:49:57 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0e7039d7a83a7e35b8b41d59d7fb9a8b4fda7fb0">0e7039d7a83a7e35b8b41d59d7fb9a8b4fda7fb0</a>
+<blockquote>
+<p>
+ Fix &quot;permit-file-xxxx&quot; handling.<br>
+<br>
+ Ray spotted that gs_add_explicit_control_path was adding 17<br>
+ to arg before using it. 17 happens to be the right amount<br>
+ to add for &quot;--permit-file-read=&quot;, but the wrong amount for<br>
+ write/control/all.<br>
+<br>
+ Update the code to call it with the correct arg pointer<br>
+ to start with.<br>
+<br>
+ Also, update a couple of routines to cope with being called<br>
+ with NULL strings.<br>
+<br>
+ Also use enum values in switch rather than 0, 1, 2.<br>
+<br>
+base/gslibctx.c<br>
+pcl/pl/plmain.c<br>
+psi/imainarg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-19 11:02:48 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=18316aba11fafc57ee77dbd7774b2c88b964a9d9">18316aba11fafc57ee77dbd7774b2c88b964a9d9</a>
+<blockquote>
+<p>
+ Make missing jbig2 decoder fatal error.<br>
+<br>
+ If we have neither Luratech nor jbig2dec, have configure fail, unless<br>
+ explicitly run with --without-jbig2dec<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-18 09:24:25 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0557d5d6628279fc526e9d87f05433800ce1b025">0557d5d6628279fc526e9d87f05433800ce1b025</a>
+<blockquote>
+<p>
+ Dates etc for 9.28 rc3<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>2019-09-17 11:42:13 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2ff44c7c8a09dd1c6b7cd750323ee4087b5cebc5">2ff44c7c8a09dd1c6b7cd750323ee4087b5cebc5</a>
+<blockquote>
+<p>
+ Fix file permissions interaction with '@' command line<br>
+<br>
+ If an options file (prefixed '@' on the command line) followed something that<br>
+ required initialising the Postscript interpreter (such as a '-c' option),<br>
+ opening the file would potentially fail because file permissions had been<br>
+ activated by the interpreter.<br>
+<br>
+ Add and remove the file from the permit reading list before attempting to open<br>
+ it.<br>
+<br>
+base/gsargs.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-12 14:23:10 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3695b7f576c607bd3627e6e28dc982fdf68b1b32">3695b7f576c607bd3627e6e28dc982fdf68b1b32</a>
+<blockquote>
+<p>
+ If set, add PCLFONTSOURCE value to permit_file_reading list<br>
+<br>
+pcl/pl/pjparse.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-11 13:07:02 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4196e26a9cf3c8afd6c069a789ac649019ae096a">4196e26a9cf3c8afd6c069a789ac649019ae096a</a>
+<blockquote>
+<p>
+ Bug 701561: 'reduce' paths before adding to permit lists<br>
+<br>
+ Before attempting to open files, we pre-process the requested file name to<br>
+ remove surplus/unnecessary elements: i.e. './././file' would be reduced to just<br>
+ './file', or '../dir/../dir/../dir/file' would be reduced to '../dir/file'.<br>
+<br>
+ The 'reduced' path is what we try to open, hence it is also what we check<br>
+ against the file permissions list before we allow files to be accessed.<br>
+<br>
+ That being so, we should also 'reduce' paths as we add them to the permissions<br>
+ lists - thus the permissions list creation and checking are consistent.<br>
+<br>
+base/gslibctx.c<br>
+base/lib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-11 14:10:27 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3d55799ea64088e08fc2783012957035c77a66ca">3d55799ea64088e08fc2783012957035c77a66ca</a>
+<blockquote>
+<p>
+ Fix Bug 696333. Allow large bitmaps in clist when writing tile cache.<br>
+<br>
+ When writing bits to update the tile cache, we don't need to restrict to<br>
+ a single command buffer as with the copy_mono and copy_color commands.<br>
+<br>
+ Progressions on:<br>
+ tests_private/comparefiles/Bug694385.pdf.psdcmyk.300.1..gs<br>
+ tests_private/pdf/sumatra/2028_-_invisible_patterns.pdf.psdcmyk.300.1..gs<br>
+ tests_private/ps/ps3cet/09-47B.PS.pdf.pkmraw.300.0..gs_pdf<br>
+ tests_private/ps/ps3fts/176-01.ps.psdcmyk.300.1..gs<br>
+<br>
+base/gxclbits.c<br>
+base/gxcldev.h<br>
+base/gxclrect.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-12 10:37:42 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1613502f83ddba352cc8e98e7dd3182c9d7732bc">1613502f83ddba352cc8e98e7dd3182c9d7732bc</a>
+<blockquote>
+<p>
+ Fix SEGV with flp device and PCL with clist mode and large BandHeight.<br>
+<br>
+ If the 'clist_init' fails initially (with rangecheck) due to the buffer<br>
+ space too small for the BandHeight specified, we loop in the caller after<br>
+ increasing the buffer size, but clist_init left &quot;is_open&quot; false when failing.<br>
+ Add save_is_open in gdev_prn_setup_as_command_list so that we can restore it<br>
+ if the clist_init eventually suceeds.<br>
+<br>
+ The SEGV was with image_data because re-opening the flp device reset the<br>
+ &quot;obsolete&quot; procs to the default, so flp_image_data was replaced by the<br>
+ gx_default_image_data, but no begin_image had been performed (flp_begin_image<br>
+ skipped this since we were not yet at the FirstPage).<br>
+<br>
+base/gdevprn.c<br>
+base/gxclist.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-16 18:53:49 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f2d03f59e04a053c14285d8dbdd869bf9a4435e7">f2d03f59e04a053c14285d8dbdd869bf9a4435e7</a>
+<blockquote>
+<p>
+ Update jbig2dec stuff for 0.17 release.<br>
+<br>
+jbig2dec/CHANGES<br>
+jbig2dec/jbig2.h<br>
+jbig2dec/jbig2dec.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-16 18:48:36 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8da8fbaeb6074161bc3a9b22e89265f5942db0d9">8da8fbaeb6074161bc3a9b22e89265f5942db0d9</a>
+<blockquote>
+<p>
+ jbig2dec: Use the same contact information everywhere.<br>
+<br>
+jbig2dec/README<br>
+jbig2dec/configure.ac.in<br>
+jbig2dec/jbig2dec.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-16 16:12:32 +0100
+</strong>
+<br>Paul Vojta &lt;vojta@math.berkely.edu&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6c6e19334062d12189612b84f53fe393a7808f74">6c6e19334062d12189612b84f53fe393a7808f74</a>
+<blockquote>
+<p>
+ Documentation - fix some typos<br>
+<br>
+ Bug #701589 &quot;Minor documentation problems in 9.28-rc2&quot;<br>
+<br>
+ Thanks to Paul Vojta for pointing these out. Unfortunately we cannot use the<br>
+ supplied patch, as it includes alterations to History9.htm, which is auto-<br>
+ generated from the commit logs. The remaining changes are applied here.<br>
+<br>
+doc/Language.htm<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-11 12:18:51 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=90bdf83d696562e4136b8f565cac06cc32b161ae">90bdf83d696562e4136b8f565cac06cc32b161ae</a>
+<blockquote>
+<p>
+ Bug 701563: pdfwrite annotation pdfmark /Border key<br>
+<br>
+ Despite the spec saying the values for the /Border key are in user space<br>
+ coordinates, Distiller appears to pass the values through to the output PDF<br>
+ untouched (no rescaling - unlike the values for /Rect, also in user space,<br>
+ according to the spec, which it does scale/translate). Ghostscript/pdfwrite<br>
+ did scale the /Border values.<br>
+<br>
+ This just changes pdfwrite to write the values out unchanged.<br>
+<br>
+devices/vector/gdevpdfm.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-16 09:56:52 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a9e997cb97a274bebfc028e8831a43d6f66be0f9">a9e997cb97a274bebfc028e8831a43d6f66be0f9</a>
+<blockquote>
+<p>
+ Documentation - add a note about SAFER for PDF/X ICC profiles<br>
+<br>
+ Bug #701553 &quot;Examples of PDF/X and PDF/A conversion should be updated for Ghostscript 9.28&quot;<br>
+<br>
+ ICC profiles required for PDF/X and PDF/A output need to be readable<br>
+ in order to work when -dSAFER is true (the new default). This wasn't<br>
+ clear from the documentation, so add a note about it.<br>
+<br>
+ As noted in the bug report, it is possible to embed the profile in the<br>
+ PostScript code, but as Chris says this is probably beyond reasonable<br>
+ expectations of the average user; they simply won't change the example<br>
+ and will then complain that it isn't correct. Users capable of making<br>
+ this work almost certainly have enough knowledge to realise they can<br>
+ do this instead of making the profile readable.<br>
+<br>
+doc/VectorDevices.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-12 19:41:47 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cea41505580dfe55234bd4972fbb09af5e2e6bb8">cea41505580dfe55234bd4972fbb09af5e2e6bb8</a>
+<blockquote>
+<p>
+ Fix various printer devices to properly call spec ops.<br>
+<br>
+ Various printer devices (psd, psdcmykog, tiffsep, tiffscaled)<br>
+ were passing the spec ops on to gx_default_dev_spec_op rather<br>
+ than gdev_prn_dev_spec_op.<br>
+<br>
+ The most obvious implication of this was that we'd sometimes<br>
+ get a warning about printer devices having a private spec op.<br>
+<br>
+devices/gdevcmykog.c<br>
+devices/gdevpsd.c<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-12 17:09:50 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=89f3d6001728678755aca8c5a02e57bba72a0813">89f3d6001728678755aca8c5a02e57bba72a0813</a>
+<blockquote>
+<p>
+ Bug 701568 followup: Fix RLE compressor.<br>
+<br>
+ The previous fix to the RLE compressor reveals an additional<br>
+ existing issue to do with us not checking whether we have<br>
+ space in the buffer to write the EOD byte.<br>
+<br>
+ Fixed here.<br>
+<br>
+base/srle.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-12 09:35:01 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f394c0722d3415ba03f57dc32dcd8484d3173b62">f394c0722d3415ba03f57dc32dcd8484d3173b62</a>
+<blockquote>
+<p>
+ Bug 701568: Fix gdevpx.c RLE stream handling.<br>
+<br>
+ The current code in pclxl_write_image_data_RLE passes<br>
+ lines of data to the RLE compression routine. It tells<br>
+ each invocation of that routine that this is the &quot;last&quot;<br>
+ block of data, when clearly it is not.<br>
+<br>
+ Accordingly, the compression routine inserts the &quot;EOD&quot; byte<br>
+ into the stream, and returns EOFC.<br>
+<br>
+ Independently of the return value used, having multiple EOD<br>
+ bytes in the data is clearly wrong. Update the caller to only<br>
+ pass &quot;last&quot; in for the last block.<br>
+<br>
+ The code still returns EOFC at the end of the data, so update<br>
+ this final call to accept (indeed, expect) that return value<br>
+ there.<br>
+<br>
+devices/vector/gdevpx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-10 09:04:46 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6cd0b941d86fe54b7e818e563dc702a147bab95a">6cd0b941d86fe54b7e818e563dc702a147bab95a</a>
+<blockquote>
+<p>
+ Fix bug 701550, problem with forall on strings.<br>
+<br>
+ Hard to believe, but this problem has existed since at least version 3.33.<br>
+ The 'string_continue' function altered the size which was used to decide if<br>
+ there were still characters to be processed BEFORE invoking the 'push(#)' macro.<br>
+ If the 'push(1)' encountered a full stack segment, it would return stackoverflow<br>
+ so that the operand stack could be extended. This meant that the decision to<br>
+ stop enumerating the string would end early (depending on how many times the<br>
+ stackoverflow occurred).<br>
+<br>
+ Usually the procedure of the forall would either consume the character (reducing<br>
+ the stack), or add an element to the stack triggering the stack extension before<br>
+ the next execution of string_continue, but -c &quot;401 string { dup } forall count =&quot;<br>
+ results in only 800 stack elements (rather than 802 as expected).<br>
+<br>
+psi/zgeneric.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-08-15 15:54:04 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;text&quot; 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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&gt;&gt;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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9423e84178071f16b83d18412b22b0b479b1938b">9423e84178071f16b83d18412b22b0b479b1938b</a>
+<blockquote>
+<p>
+ Fix deep colour transparency &quot;uncompositing&quot;.<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;lib&quot; 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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Ghostscript creates broken PDF file after color conversion&quot;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot; More weirdness with images containing invalid /Mask values&quot;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;till.kamppeter@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=be4da9d67cbec784be740086681f96a63496ae48">be4da9d67cbec784be740086681f96a63496ae48</a>
+<blockquote>
+<p>
+ &quot;cups&quot;/&quot;pwgraster&quot; 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 &lt;till.kamppeter@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0e28c843e56d1be4638bf9d84a499794534ea0d9">0e28c843e56d1be4638bf9d84a499794534ea0d9</a>
+<blockquote>
+<p>
+ &quot;cups&quot;/&quot;pwgraster&quot; output device: Prefer the page size requested by user<br>
+<br>
+ Without special scaling/cropping options (&quot;fit-to-page&quot;, &quot;fill&quot;,<br>
+ &quot;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 &quot;PageSize&quot; or &quot;media&quot; 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 &quot;PageSize&quot; or &quot;media&quot; 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 &lt;till.kamppeter@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a5ccd009fd632e058b4f0bc2849cfc293b39d1f2">a5ccd009fd632e058b4f0bc2849cfc293b39d1f2</a>
+<blockquote>
+<p>
+ &quot;cups&quot;/&quot;pwgraster&quot; 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 &lt;till.kamppeter@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a0284b5ac8c59014eab90c5a5ec388cd1676b79d">a0284b5ac8c59014eab90c5a5ec388cd1676b79d</a>
+<blockquote>
+<p>
+ &quot;cups&quot;/&quot;pwgraster&quot; 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 &quot;Custom.XXXxYYY&quot;<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 &lt;till.kamppeter@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ee43ff891b51f0ccec3ba38d538d3e23441ed439">ee43ff891b51f0ccec3ba38d538d3e23441ed439</a>
+<blockquote>
+<p>
+ &quot;cups&quot;/&quot;pwgraster&quot; 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;till.kamppeter@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=137a0bda39f861600488b5a11c63914854c454c8">137a0bda39f861600488b5a11c63914854c454c8</a>
+<blockquote>
+<p>
+ &quot;cups&quot;/&quot;pwgraster&quot; 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 &lt;chris.liddell@artifex.com&gt;<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 (&quot;\\&quot;) - 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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9ba1827e220cd49a6732c04fcf3e55a268014377">9ba1827e220cd49a6732c04fcf3e55a268014377</a>
+<blockquote>
+<p>
+ Fix commit ec0b35fed3de: &quot;Handle directory separators...&quot;<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 &lt;Robin.Watts@artifex.com&gt;<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 &quot;all colors&quot; value.<br>
+<br>
+base/gxclrect.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-08-21 10:10:51 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<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 &quot;Safer Mode Bypass by .forceput Exposure in .pdfexectoken&quot;<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;/&quot; and &quot;\&quot; 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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;-dSAFER -dOLDSAFER&quot; on the command<br>
+ line, or &quot;-dOLDSAFER&quot; 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;read&quot; 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 ( &gt; 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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ray.johnston@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3eb2b1337260a17274588d377032e1f9953062fd">3eb2b1337260a17274588d377032e1f9953062fd</a>
+<blockquote>
+<p>
+ Squash double -&gt; 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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;PDFA fails to validate by Preflight&quot;<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 &lt;michael.vrhel@artifex.com&gt;<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 &quot;Compatibility<br>
+ with Opaque Printing&quot;). 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>
+ &quot;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&quot;<br>
+<br>
+ which makes sense for overprinting,<br>
+<br>
+ vs.<br>
+<br>
+ &quot;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.&quot;<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 &lt;ray.johnston@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Incorrect output after ghostscript processing of a PDF file&quot;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Error: /execstackoverflow in --.systemvar--&quot;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Low Printer VM and gswinc32.exe crashing on postscript file with Korean text&quot;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;PB with Pantone color in pdfwrite&quot;<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 &lt;ray.johnston@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;henry.stiles@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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-&gt;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-&gt;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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &gt;4Gig TIFF!<br>
+<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-07-15 18:43:04 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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-&gt;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 &lt;Robin.Watts@artifex.com&gt;<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 &gt; 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-&gt;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 &gt; 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 &lt;shailesh.mistry@hotmail.co.uk&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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-&gt;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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &quot;retained&quot;. This is required<br>
+ for gs, because postscript can call &quot;currentdevice&quot; 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 &quot;unretained&quot;. 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;robin.watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;shailesh.mistry@hotmail.co.uk&gt;<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 &lt;shailesh.mistry@hotmail.co.uk&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;ACTIONABLE_HEAP_CORRUPTION when try print with -sOutputFile&quot;<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 &lt;shailesh.mistry@hotmail.co.uk&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;robin.watts@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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-&gt;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 &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=108dd018b746d33ad06a7ee863fae56cbeb1fd80">108dd018b746d33ad06a7ee863fae56cbeb1fd80</a>
+<blockquote>
+<p>
+ &quot;Fix&quot; 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 &quot;fix&quot; 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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &quot;=foo&quot; 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 &lt;ken.sharp@artifex.com&gt;<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 - &quot;PDF missing two bounding boxes on process&quot;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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-&gt;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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ray.johnston@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;all devices&quot; cluster test<br>
+<br>
+devices/gdevdfax.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-05-07 11:30:15 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<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 &quot;managed&quot; 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&quot; 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 &lt;Robin.Watts@artifex.com&gt;<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 * -&gt; gp_file *, fwrite -&gt; 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>
+ &lt;name&gt; &lt;string&gt; .addcontrolpath -<br>
+<br>
+ Add the given &lt;string&gt; (path) to the list of paths for<br>
+ controlset &lt;name&gt;, where &lt;name&gt; can be:<br>
+ /PermitFileReading<br>
+ /PermitFileWriting<br>
+ /PermitFileControl<br>
+ (Anything else -&gt; 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;henry.stiles@artifex.com&gt;<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 &lt;henry.stiles@artifex.com&gt;<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 &lt;henry.stiles@artifex.com&gt;<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 &lt;henry.stiles@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;nancy.durgin@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;UseDeviceDependentColor&quot; 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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Can not convert pdf to tiff&quot;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;i3v@mail.ru&gt;<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 &quot;Typos in VectorDevices.htm&quot;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;shailesh.mistry@hotmail.co.uk&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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-&gt;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 &lt;ken.sharp@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Text searchability broken due to omission of /ToUnicode /Identity-H&quot;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &gt; 256<br>
+<br>
+ Bug #700996 &quot;PCL Files Processing failure&quot;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b399f849ce1aa391da1abeb23fd32e376b56e522">b399f849ce1aa391da1abeb23fd32e376b56e522</a>
+<blockquote>
+<p>
+ Bug 700624: Fix &quot;full&quot; 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;a.grahn@fzd.de&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a3be0c9d86981313d8724f6c29f2feaa07152976">a3be0c9d86981313d8724f6c29f2feaa07152976</a>
+<blockquote>
+<p>
+ Bug #700984 &quot;BMC pdfmark: BMC keyword missing from content stream (patch included)&quot;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Error: unrecognized font file starts with &lt;01000D02&gt;&quot;<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 &lt;8001&gt; and otherwise failed. I've modified this so that if the<br>
+ bytes are not &lt;8001&gt; 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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Warning Combed form fields are not yet implemented&quot;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;nancy.durgin@artifex.com&gt;<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-&gt;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-&gt;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 &lt;nancy.durgin@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;size&quot; 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;sebras@gmail.com&gt;<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 &lt;ray.johnston@artifex.com&gt;<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 &quot;THREAD_DONE&quot;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=76c6de5428936c8fdb7269d7fcc31d4bdc83d745">76c6de5428936c8fdb7269d7fcc31d4bdc83d745</a>
+<blockquote>
+<p>
+ Fix problems with &quot;typedef struct foo_s foo;&quot; 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>
+ &quot;-std=gnu89 -pedantic&quot;.<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;Typo in example command for PDF/X-3 in VectorDevices.htm&quot;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot;defining BATCH causes typecheck in ifelse&quot;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f5bd9757cffeb8b173cdde161b39abd381e325c3">f5bd9757cffeb8b173cdde161b39abd381e325c3</a>
+<blockquote>
+<p>
+ Documentation changes<br>
+<br>
+ Bug #700930 &quot;Ghostscript - Typo in example command for PDF/X-3 in VectorDevices.htm&quot;<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 &lt;Robin.Watts@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &quot; Uninitialised colors used in path plotting&quot;<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;new&quot; 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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &quot;&lt;&lt; /SeparationColorNames [(Pantone 137 CVU)] /SeparationOrder [(Pantone 137 CVU)]&gt;&gt;<br>
+ setpagedevice&quot; 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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;ken.sharp@artifex.com&gt;<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 &lt;chris.liddell@artifex.com&gt;<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 &quot;core&quot; 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 &lt;knut_petersen@t-online.de&gt;<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 &lt;knut_petersen@t-online.de&gt;<br>
+<br>
+Resource/Init/pdf_font.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-03-19 10:06:38 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<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 &lt;michael.vrhel@artifex.com&gt;<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 &lt;ray.johnston@artifex.com&gt;<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 &lt;ray.johnston@artifex.com&gt;<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-&gt;rect.<br>
+<br>
+base/gxp1fill.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-03-19 14:35:43 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<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 &quot;Option FillOrder doesn't work anymore&quot;<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 &lt;chris.liddell@artifex.com&gt;<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>
@@ -205033,7 +212449,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Install.htm b/doc/Install.htm
index 179313e61..53017de7e 100644
--- a/doc/Install.htm
+++ b/doc/Install.htm
@@ -440,7 +440,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Internal.htm b/doc/Internal.htm
index 163db9237..1b78ddc9c 100644
--- a/doc/Internal.htm
+++ b/doc/Internal.htm
@@ -118,7 +118,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Language.htm b/doc/Language.htm
index d6702f6b3..0b35e2368 100644
--- a/doc/Language.htm
+++ b/doc/Language.htm
@@ -1974,7 +1974,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Lib.htm b/doc/Lib.htm
index 049c86722..3e2c19619 100644
--- a/doc/Lib.htm
+++ b/doc/Lib.htm
@@ -1047,7 +1047,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Make.htm b/doc/Make.htm
index 0c96d84bf..0f69e0a5d 100644
--- a/doc/Make.htm
+++ b/doc/Make.htm
@@ -1517,7 +1517,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/News.htm b/doc/News.htm
index adb49d7d6..c18ce5501 100644
--- a/doc/News.htm
+++ b/doc/News.htm
@@ -96,34 +96,28 @@ overview</a>.
<!-- [2.0 begin contents] ================================================== -->
-<h2><a name="Version9.27"></a>Version 9.27 (2019-04-04)</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 &quot;-dNOSAFER&quot; option.
+<h2><a name="Version9.50"></a>Version 9.50 (2019-09-30)</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.
+<p>The change to version 9.50 (rather than the intended 9.28) follows recognition
+of the extent and importance of the file access control redesign/reimplementation
+outlined below.
</li>
<li>
-<p>We have added a new &quot;product&quot;: &quot;gpdl&quot;. This is a rethink/redesign of the old
-&quot;language_switch&quot; 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 &quot;experimental&quot; 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
@@ -135,26 +129,46 @@ Our fork will be available as its own package separately from Ghostscript (and M
<li>
<p>The usual round of bug fixes, compatibility changes, and incremental improvements.
</li>
+<li>
+<p>Special thanks to Akira Kakuto, Paul Wessel, William Bader, Nelson H. F. Beebe and
+everyone else who put time and effort into testing this new release.
+</li>
</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.50_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>&sol;<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.50, 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 &quot;tidying&quot; 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
operators may stop working, or may change behaviour.
<p>If you encounter such a case, please contact us (either the #ghostscript IRC channel,
or the gs-devel mailing list would be best), and we'll work with you to either find an
-alternative solution.
+alternative solution or return the previous functionality, if there is genuinely no other
+option.
<p>One case we know this has occurred is GSView 5 (and earlier). GSView 5 support for PDF
files relied upon internal use only features which are no longer available. GSView 5 will
still work as previously for Postscript files. For PDF files, users are encouraged to look
at <a href="https://www.mupdf.com">MuPDF</a>.
</li>
</ul>
-<h3><a name="9.27_changelog"></a>Changelog</h3>
+<h3><a name="9.50_changelog"></a>Changelog</h3>
<p>See the <a href="History9.htm">history file</a> for complete log
of changes.
@@ -179,7 +193,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Ps-style.htm b/doc/Ps-style.htm
index bfed50447..c4e878555 100644
--- a/doc/Ps-style.htm
+++ b/doc/Ps-style.htm
@@ -549,7 +549,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Ps2epsi.htm b/doc/Ps2epsi.htm
index 66a44d91b..da5925472 100644
--- a/doc/Ps2epsi.htm
+++ b/doc/Ps2epsi.htm
@@ -229,7 +229,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Psfiles.htm b/doc/Psfiles.htm
index 3b6cf2d36..0e1ffb092 100644
--- a/doc/Psfiles.htm
+++ b/doc/Psfiles.htm
@@ -894,7 +894,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Readme.htm b/doc/Readme.htm
index 9802e637c..713dc8383 100644
--- a/doc/Readme.htm
+++ b/doc/Readme.htm
@@ -578,7 +578,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Release.htm b/doc/Release.htm
index b9089d5f9..42304e5e8 100644
--- a/doc/Release.htm
+++ b/doc/Release.htm
@@ -845,7 +845,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/SavedPages.htm b/doc/SavedPages.htm
index 42db79941..517082d9e 100644
--- a/doc/SavedPages.htm
+++ b/doc/SavedPages.htm
@@ -317,7 +317,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Source.htm b/doc/Source.htm
index 8fc29eac4..7deaa45f3 100644
--- a/doc/Source.htm
+++ b/doc/Source.htm
@@ -465,7 +465,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Unix-lpr.htm b/doc/Unix-lpr.htm
index 071a33c51..0330fc54d 100644
--- a/doc/Unix-lpr.htm
+++ b/doc/Unix-lpr.htm
@@ -304,7 +304,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Use.htm b/doc/Use.htm
index 846072472..6eede21b7 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>
@@ -5246,7 +5247,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/VectorDevices.htm b/doc/VectorDevices.htm
index e1d241b2a..c48786a69 100644
--- a/doc/VectorDevices.htm
+++ b/doc/VectorDevices.htm
@@ -1410,7 +1410,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/WhatIsGS.htm b/doc/WhatIsGS.htm
index c613c33e7..d6739ab9e 100644
--- a/doc/WhatIsGS.htm
+++ b/doc/WhatIsGS.htm
@@ -189,7 +189,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/gs-vms.hlp b/doc/gs-vms.hlp
index c79bfeca6..f6264ad52 100644
--- a/doc/gs-vms.hlp
+++ b/doc/gs-vms.hlp
@@ -1,6 +1,6 @@
1 gs
gs - GPL Ghostscript interpreter/previewer
-! Ghostscript version 9.27, 4 April 2019
+! Ghostscript version 9.50, 15 October 2019
Usage:
$ gs [options] [file ...]
diff --git a/doc/sample_downscale_device.htm b/doc/sample_downscale_device.htm
index 55328600e..bb84b80f0 100644
--- a/doc/sample_downscale_device.htm
+++ b/doc/sample_downscale_device.htm
@@ -263,7 +263,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
<!--FINISH EDITING HERE-->
diff --git a/doc/subclass.htm b/doc/subclass.htm
index adef1801c..d6b41d5d0 100644
--- a/doc/subclass.htm
+++ b/doc/subclass.htm
@@ -812,7 +812,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/thirdparty.htm b/doc/thirdparty.htm
index 3d599b921..bb87b3401 100644
--- a/doc/thirdparty.htm
+++ b/doc/thirdparty.htm
@@ -268,7 +268,7 @@ or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200,
Novato, CA 94945, U.S.A., +1(415)492-9861, for further information.
<p>
-<small>Ghostscript version 9.27, 4 April 2019
+<small>Ghostscript version 9.50, 15 October 2019
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/man/dvipdf.1 b/man/dvipdf.1
index 424eca83f..5d17aff62 100644
--- a/man/dvipdf.1
+++ b/man/dvipdf.1
@@ -1,4 +1,4 @@
-.TH DVIPDF 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH DVIPDF 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
dvipdf \- Convert TeX DVI file to PDF using ghostscript and dvips
.SH SYNOPSIS
@@ -21,7 +21,7 @@ and any options from the command-line.
.SH SEE ALSO
gs(1), dvips(1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/gs.1 b/man/gs.1
index a6e3cbe30..7e01d94a6 100644
--- a/man/gs.1
+++ b/man/gs.1
@@ -1,4 +1,4 @@
-.TH GS 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH GS 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
gs \- Ghostscript (PostScript and PDF language interpreter and previewer)
.SH SYNOPSIS
@@ -442,7 +442,7 @@ The various Ghostscript document files (above), especially \fBUse.htm\fR.
See http://bugs.ghostscript.com/ and the Usenet news group
comp.lang.postscript.
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the primary maintainers
of Ghostscript.
diff --git a/man/gslp.1 b/man/gslp.1
index c411adb56..b38098942 100644
--- a/man/gslp.1
+++ b/man/gslp.1
@@ -1,4 +1,4 @@
-.TH GSLP 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH GSLP 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
gslp \- Format and print text using ghostscript
.br
@@ -92,7 +92,7 @@ Also, the string %# in a heading or footing is replaced with the page #.
.SH SEE ALSO
gs(1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/gsnd.1 b/man/gsnd.1
index 36c504069..f0c757d1b 100644
--- a/man/gsnd.1
+++ b/man/gsnd.1
@@ -1,4 +1,4 @@
-.TH GSND 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH GSND 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
gsnd \- Run ghostscript (PostScript and PDF engine) without display
.SH SYNOPSIS
@@ -12,7 +12,7 @@ flag, followed by any other arguments from the command-line.
.SH SEE ALSO
gs(1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/pdf2dsc.1 b/man/pdf2dsc.1
index 7380ef67b..f42448928 100644
--- a/man/pdf2dsc.1
+++ b/man/pdf2dsc.1
@@ -1,4 +1,4 @@
-.TH PDF2DSC 1 "4 April 2019" 9.27 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDF2DSC 1 "15 October 2019" 9.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
pdf2dsc \- generate a PostScript page list of a PDF document
.SH SYNOPSIS
@@ -28,6 +28,6 @@ Ghostscript since release 3.53.
.SH SEE ALSO
gs(1), ghostview(1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Yves Arrouye <yves.arrouye@usa.net> and Russell Lang gsview at ghostgum.com.au
diff --git a/man/pdf2ps.1 b/man/pdf2ps.1
index 2d3807d59..b2331f568 100644
--- a/man/pdf2ps.1
+++ b/man/pdf2ps.1
@@ -1,4 +1,4 @@
-.TH PDF2PS 1 "4 April 2019" 9.27 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDF2PS 1 "15 October 2019" 9.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
pdf2ps \- Ghostscript PDF to PostScript translator
.SH SYNOPSIS
@@ -14,7 +14,7 @@ LanguageLevel 3 in the output.
Run "\fBgs -h\fR" to find the location of Ghostscript documentation on your
system, from which you can get more details.
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/pf2afm.1 b/man/pf2afm.1
index 29c85fd5c..548ed39dd 100644
--- a/man/pf2afm.1
+++ b/man/pf2afm.1
@@ -1,4 +1,4 @@
-.TH PF2AFM 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH PF2AFM 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
pf2afm \- Make an AFM file from Postscript (PFB/PFA/PFM) font files using ghostscript
.SH SYNOPSIS
@@ -15,7 +15,7 @@ gs(1)
.br
pf2afm.ps in the Ghostscript lib directory.
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/pfbtopfa.1 b/man/pfbtopfa.1
index 3bcc26182..f6bda4b5f 100644
--- a/man/pfbtopfa.1
+++ b/man/pfbtopfa.1
@@ -1,4 +1,4 @@
-.TH PFBTOPFA 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH PFBTOPFA 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
pfbtopfa \- Convert Postscript .pfb fonts to .pfa format using ghostscript
.SH SYNOPSIS
@@ -10,7 +10,7 @@ to convert a .pfb file into a .pfa file.
.SH SEE ALSO
gs(1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/printafm.1 b/man/printafm.1
index 6c4c527a9..dcab9474e 100644
--- a/man/printafm.1
+++ b/man/printafm.1
@@ -1,4 +1,4 @@
-.TH PRINTAFM 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH PRINTAFM 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
printafm \- Print the metrics from a Postscript font in AFM format using ghostscript
.SH SYNOPSIS
@@ -11,7 +11,7 @@ Output goes to stdout.
.SH SEE ALSO
gs(1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/ps2ascii.1 b/man/ps2ascii.1
index cc7b44419..2ccb3662d 100644
--- a/man/ps2ascii.1
+++ b/man/ps2ascii.1
@@ -1,4 +1,4 @@
-.TH PS2ASCII 1 "4 April 2019" 9.27 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2ASCII 1 "15 October 2019" 9.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
ps2ascii \- Ghostscript translator from PostScript or PDF to ASCII
.SH SYNOPSIS
@@ -22,7 +22,7 @@ system, from which you can get more details.
.SH SEE ALSO
pstotext(1), http://www.research.digital.com/SRC/virtualpaper/pstotext.html
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/ps2epsi.1 b/man/ps2epsi.1
index 296e52328..42b852c6b 100644
--- a/man/ps2epsi.1
+++ b/man/ps2epsi.1
@@ -1,4 +1,4 @@
-.TH PS2EPSI 1 "4 April 2019" 9.27 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2EPSI 1 "15 October 2019" 9.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
ps2epsi \- generate conforming Encapsulated PostScript
.SH SYNOPSIS
@@ -59,7 +59,7 @@ ps2epsi.ps>the Ghostscript program which does the work
.SH SEE ALSO
gs (1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
However, the content may be obsolete, or inconsistent with ps2epsi.txt.
.SH AUTHOR
George Cameron
diff --git a/man/ps2pdf.1 b/man/ps2pdf.1
index 93d6cfbb3..534da391a 100644
--- a/man/ps2pdf.1
+++ b/man/ps2pdf.1
@@ -1,4 +1,4 @@
-.TH PS2PDF 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH PS2PDF 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
ps2pdf \- Convert PostScript to PDF using ghostscript
.br
@@ -89,7 +89,7 @@ Ps2pdf.htm in the Ghostscript documentation
See http://bugs.ghostscript.com/ and the Usenet news group
comp.lang.postscript.
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/ps2pdfwr.1 b/man/ps2pdfwr.1
index b042111b9..2266bfa56 100644
--- a/man/ps2pdfwr.1
+++ b/man/ps2pdfwr.1
@@ -1,4 +1,4 @@
-.TH PS2PDFWR 1 "4 April 2019" 9.27 Ghostscript \" -*- nroff -*-
+.TH PS2PDFWR 1 "15 October 2019" 9.50 Ghostscript \" -*- nroff -*-
.SH NAME
ps2pdfwr \- Convert PostScript to PDF without specifying CompatibilityLevel, using ghostscript
.SH SYNOPSIS
@@ -23,7 +23,7 @@ scripts all invoke this one with the addition of the respective compatibility le
.SH SEE ALSO
gs(1), ps2pdf(1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/ps2ps.1 b/man/ps2ps.1
index d340f47db..178f2b24f 100644
--- a/man/ps2ps.1
+++ b/man/ps2ps.1
@@ -1,4 +1,4 @@
-.TH PS2PS 1 "4 April 2019" 9.27 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2PS 1 "15 October 2019" 9.50 "Ghostscript Tools" \" -*- nroff -*-
.SH NAME
ps2ps, eps2eps \- Ghostscript PostScript "distiller"
.SH SYNOPSIS
@@ -22,7 +22,7 @@ system, from which you can get more details.
.SH SEE ALSO
ps2pdf(1), ps2ascii(1), ps2epsi(1)
.SH VERSION
-This document was last revised for Ghostscript version 9.27.
+This document was last revised for Ghostscript version 9.50.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.