summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2021-02-22 14:11:46 +0000
committerChris Liddell <chris.liddell@artifex.com>2021-03-30 17:12:43 +0100
commit9e3a98f1cf540e03b1549efe117f8f92b06a9451 (patch)
tree86496dfdb636a56acda83d8983b3c52bc5152e59
parente69bf5a2cfd9df06d93c45cbfebea5cd0d3c1d5d (diff)
downloadghostpdl-9e3a98f1cf540e03b1549efe117f8f92b06a9451.tar.gz
Brings master up to date with gs9.54.0 branch
Change GS_PRODUCT string, and dates for release Update dates/docs for 9.54.0 RC1 Edit release highlights text Tweaks and corrections for News.htm Update changelog and dates for 9.54.0 RC 1 History/News updates And add an html link target for BlackText Update dates and changelog for 9.54.0 rc1 Update dates, and changelog for 9.54.0rc1 Update change log post-9.54.0rc1 More post-9.54.0rc1 change log changes Update dates etc for 9.54.0 release
-rw-r--r--base/version.mak2
-rw-r--r--doc/API.htm2
-rw-r--r--doc/C-style.htm2
-rw-r--r--doc/Commprod.htm2
-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/GPDL.htm2
-rw-r--r--doc/History9.htm8510
-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.htm92
-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
47 files changed, 8545 insertions, 176 deletions
diff --git a/base/version.mak b/base/version.mak
index a45db814b..82799c4a9 100644
--- a/base/version.mak
+++ b/base/version.mak
@@ -17,7 +17,7 @@ GS_VERSION_MAJOR=9
GS_VERSION_MINOR=55
GS_VERSION_PATCH=0
# Revision date: year x 10000 + month x 100 + day.
-GS_REVISIONDATE=20210222
+GS_REVISIONDATE=20210330
# Derived values
GS_VERSION=$(GS_VERSION_MAJOR)$(GS_VERSION_MINOR)$(GS_VERSION_PATCH)
GS_DOT_VERSION=$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR).$(GS_VERSION_PATCH)
diff --git a/doc/API.htm b/doc/API.htm
index 7fe808820..5bbb9ec54 100644
--- a/doc/API.htm
+++ b/doc/API.htm
@@ -1771,7 +1771,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>
<p>
-<small>Ghostscript version 9.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/C-style.htm b/doc/C-style.htm
index 98e4bf9d9..c600eac60 100644
--- a/doc/C-style.htm
+++ b/doc/C-style.htm
@@ -1609,7 +1609,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>
<p>
-<small>Ghostscript version 9.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Commprod.htm b/doc/Commprod.htm
index 5f3cc1853..6b12e3056 100644
--- a/doc/Commprod.htm
+++ b/doc/Commprod.htm
@@ -279,7 +279,7 @@ of the license contained in the file LICENSE in this distribution. For more info
http://www.artifex.com/licensing/or contact Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato, CA 94945, U.S.A., +1(415)492-9861.</p>
<p>
-<small>Ghostscript version 9.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/DLL.htm b/doc/DLL.htm
index 46363adc4..ce120ad2f 100644
--- a/doc/DLL.htm
+++ b/doc/DLL.htm
@@ -766,7 +766,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Deprecated.htm b/doc/Deprecated.htm
index c33b5b5d8..4edc729da 100644
--- a/doc/Deprecated.htm
+++ b/doc/Deprecated.htm
@@ -5763,7 +5763,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Develop.htm b/doc/Develop.htm
index 956e4fa36..0e546f549 100644
--- a/doc/Develop.htm
+++ b/doc/Develop.htm
@@ -4754,7 +4754,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Devices.htm b/doc/Devices.htm
index 297da8673..c1048e594 100644
--- a/doc/Devices.htm
+++ b/doc/Devices.htm
@@ -2146,7 +2146,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Drivers.htm b/doc/Drivers.htm
index 6c43c1852..47c5b0522 100644
--- a/doc/Drivers.htm
+++ b/doc/Drivers.htm
@@ -3684,7 +3684,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Fonts.htm b/doc/Fonts.htm
index a3a94356b..bfc948dfc 100644
--- a/doc/Fonts.htm
+++ b/doc/Fonts.htm
@@ -360,7 +360,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/GPDL.htm b/doc/GPDL.htm
index 2c1aa1bd9..20bc722d0 100644
--- a/doc/GPDL.htm
+++ b/doc/GPDL.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>
<p>
-<small>Ghostscript version 9.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/History9.htm b/doc/History9.htm
index fa728cfe5..bede0e58a 100644
--- a/doc/History9.htm
+++ b/doc/History9.htm
@@ -69,6 +69,7 @@ TOC to see how to edit it for visual conciseness.
<h2>Table of contents</h2>
<blockquote><ul>
+<li><a href="#Version9.54.0">Version 9.54.0 (2021-03-19)</a>
<li><a href="#Version9.53.3">Version 9.53.3 (2020-10-01)</a>
<li><a href="#Version9.52">Version 9.52 (2020-03-19)</a>
<li><a href="#Version9.50">Version 9.50 (2019-10-15)</a>
@@ -130,84 +131,59 @@ overview</a>.
<!-- [1.0 end visible header] ============================================== -->
<!-- [2.0 begin contents] ================================================== -->
-<h2><a name="Version9.53.3"></a>Version 9.53.3 (2020-10-01)</h2>
+<h2><a name="Version9.54.0"></a>Version 9.54.0 (2021-03-19)</h2>
+<p>The 9.54.0 release is a maintenance release, and also adds new functionality.
+<br>
<p> Highlights in this release include:
<ul>
<li>
-<p>The 9.53.3 release is primarily maintenance.
+<p>Overprint simulation is now available to all output devices, allowing
+quality previewing/proofing of PostScript and PDF jobs that rely on overprint.
+See the <code>-dOverprint</code> option documentation in:
+<a href="Use.htm#Overprint">Overprint</a>
</li>
<li>
-<p>Issues arose with 9.53.0/1/2 that prompted the release of a <code>.3</code> patch:
-<ul>
-<li>A crash (or silent, erroneous exit) on 64 bit Windows and other LLP64 type environments.</li>
-<li>What appears to be a compiler optimiser bug in 64 bit Windows builds with Visual Studio 2019</li>
-<li>A crash related to management of ICC profile objects</li>
-<li>A crash on SPARC hardware due to an alignment mismatch in the bitmap cache</li>
-<li>A parameter type mismatch that would cause Ghostcript to error out during initialisation,
-which affected 64 big, big endian architectures.</li>
-<li>An expected side effect of another change that prevented multithreaded rendering and background
-rendering from working correctly.</li>
-</ul>
-<p>Details of those can be found in the changelog.
+<p>The &quot;docxwrite&quot; device adds the ability to output to Microsoft Word
+&quot;docx&quot; (it currently only handles text).
+See: <a href="VectorDevices.htm#DOCX">docxwrite</a>
</li>
<li>
-<p>The most obvious change is the (re-)introduction of the patch level to the version number,
-this helps facilitate a revised policy on handling security related issues.
-<p>To clarify: in the event we decide to release a patch revision, it will <em>replace</em> the release
-with the previous patch number. Release notes, highlights and warnings will remain the same, except for the
-addition of whatever fix(es) prompted the patch.
+<p>The pdfwrite device is now capable of using the Tesseract OCR engine when it is
+built into Ghostscript to improve searchability and copy and paste functionality when
+the input lacks the metadata for that purpose. See: <a href="VectorDevices.htm#UseOCR">UseOCR</a>
</li>
<li>
-<p>Our efforts in code hygiene and maintainability continue.
+<p>Ghostscript/GhostPDL now includes a &quot;map text to black&quot;
+function, where text drawn by an input job (except when drawn using a
+Type 3 font) can be forced to draw in solid black. See:
+<a href="Use.htm#BlackText">BlackText</a>
</li>
<li>
-<p>We have added the capability to build with the Tesseract OCR engine. In such
-a build, new devices are available (pdfocr8/pdfocr24/pdfocr32) which render the
-output file to an image, OCR that image, and output the image "wrapped" up as a
-PDF file, with the OCR generated text information included as "invisible" text
-(in PDF terms, text rendering mode 3).
-<p>Due to some patches to the Tesseract sources that are required (integrated
-upstream, but awaiting release), time constraints, and the experimental nature
-of the feature, we only support including Tesseract from source, not linking to
-Tesseract shared libraries. Whether we add this capability will be largely
-dependant on community demand for the feature.
-<p>See <a href="https://www.ghostscript.com/ocr.html">Enabling OCR</a> for more details.
+<p>Ghostscript/GhostPDL now supports simple N-up imposition &quot;internally&quot;. See:
+<a href="Use.htm#NupControl">NupControl</a>
</li>
<li>
-<p>We have added Python bindings for the <code>gsapi</code> interface, can be found
-in <code>demos/python</code>. These are experimental, and we welcome feedback from
-interested developers.
-</li>
-<li>
-<p>For those integrating Ghostscript/GhostPDL via the <code>gsapi</code> interface, we
-have added new capabilities to that, specifically in terms of setting and interrogating
-device parameters. These, along with the existing interface calls, are documented in:
-<a href="API.htm">Ghostscript Interpreter API</a>
-</li>
-<li>
-<p><b>IMPORTANT:</b> In consultation with a representative of
-(<a href="http://www.openprinting.org">OpenPrinting</a>) it is
-our intention to deprecate and, in the not distant future, remove the
-OpenPrinting Vector/Raster Printer Drivers (that is, the <code>opvp</code>
-and <code>oprp</code> devices).
-<p> If you rely on either of these devices, <b><i>please</i></b> get in touch with
-us, so we can discuss your use case, and revise our plans accordingly.
+<p>Our efforts in code hygiene and maintainability continue.
</li>
<li>
-<p>IMPORTANT: We have forked LittleCMS2 into LittleCMS2mt (the "mt" indicating "multi-thread").
-LCMS2 is not thread safe and cannot be made thread safe without breaking the ABI. Our fork
-will be thread safe and include performance enhancements (these changes have all be been
-offered and rejected upstream). We will maintain compatibility between Ghostscript and LCMS2
-for a time, but not in perpetuity. If there is sufficient interest, our fork will be
-available as its own package separately from Ghostscript (and MuPDF).
+<p>The usual round of bug fixes, compatibility changes, and incremental improvements.
</li>
<li>
-<p>The usual round of bug fixes, compatibility changes, and incremental improvements.
+<p>(9.53.0) We have added the capability to build with the Tesseract OCR engine. In such
+a build, new devices are available (pdfocr8/pdfocr24/pdfocr32) which render the
+output file to an image, OCR that image, and output the image "wrapped" up as a
+PDF file, with the OCR generated text information included as "invisible" text
+(in PDF terms, text rendering mode 3).
+<p>Mainly due to time constraints, we only support including Tesseract from
+source included in our release packages, and not linking to Tesseract/Leptonica
+shared libraries. Whether we add this capability will be largely dependent on
+community demand for the feature.
+<p>See <a href="https://www.ghostscript.com/ocr.html">Enabling OCR</a> for more details.
</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.52_Incompatible_changes"></a>Incompatible changes</h3>
+<h3><a name="9.54.0_Incompatible_changes"></a>Incompatible changes</h3>
<h4>Included below are incompatible changes from recent releases (the
specific release in question listed in parentheses). We include these,
for now, as we are aware that not everyone upgrades with every release.</h4>
@@ -258,6 +234,8424 @@ alternative solution or return the previous functionality, if there is genuinely
option.
</li>
</ul>
+<h3><a name="9.54.0_changelog"></a>Changelog</h3>
+<p><strong>2021-03-29 12:09: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=28f5ec9d1b374449c89f7200e87ba855a97ebdd2">28f5ec9d1b374449c89f7200e87ba855a97ebdd2</a>
+<blockquote>
+<p>
+ Bug 703741: clear xstate_change flag on gsave<br>
+<br>
+ xstate_change is used (partly) to track whether ExtGState parameters have<br>
+ changed since the last &quot;q&quot; op, and thus whether we need to set them back again<br>
+ (for the benefit of the pdf14 compositor) on the &quot;Q&quot; op.<br>
+<br>
+ Previously, the flag was inherited by the &quot;new&quot; gstate created by a gsave,<br>
+ so we could end up trying to reset the ExGState params at the wrong point.<br>
+<br>
+ This is especially problematic with internally triggered gsave/grestore for,<br>
+ for example, rendering glyphs, or accumulating patterns, etc.<br>
+<br>
+ In other words, we currently can end up with a sequence like:<br>
+<br>
+ q<br>
+ &lt;change ExtGState params&gt; &lt;- set the xstate_change flag<br>
+ q &lt;- flag still set<br>
+ q &lt;- flag still set<br>
+ Q &lt;- reset the ExtGState params, flag still set<br>
+ Q &lt;- reset the ExtGState params, flag still set<br>
+ Q &lt;- reset the ExtGState params, restores to gstate without flag set<br>
+<br>
+ Whereas what we want is:<br>
+<br>
+ q<br>
+ &lt;change ExtGState params&gt; &lt;- sets the xstate_change flag<br>
+ q &lt;- flag not set (still set in a gstate lower down the stack)<br>
+ q &lt;- flag not set (still set in a gstate lower down the stack)<br>
+ Q<br>
+ Q &lt;- this returns the gstate with the flag to the top of the gstate stack<br>
+ Q &lt;- reset the ExtGState params, restores to gstate without flag set<br>
+<br>
+ So, reset the flag during the gsave.<br>
+<br>
+base/gsstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-24 13:07:41 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=906f906617067aaf42e4e995cc63acdf9bded7c0">906f906617067aaf42e4e995cc63acdf9bded7c0</a>
+<blockquote>
+<p>
+ pdfwrite - fix FastWebView with multiple put_params() calls<br>
+<br>
+ When testing this I must have used a setup which either set the<br>
+ OutputFile before setting FastWebView, or set them simultaneously. If we<br>
+ have the two assignments in different calls, and the first call is not<br>
+ to set OutputFile, then the assignment of FastWebView will not work.<br>
+<br>
+ This is because we didn't check whether OutputFile was set before<br>
+ checking if it was seekable, obviously a NULL file is not seekable! This<br>
+ caused us to reset 'Linearize'. The subsequent call to set OutputFile<br>
+ could not re-enable Linearize, and so linearization would not be<br>
+ enabled.<br>
+<br>
+ The fix here is simply to check that pdev-&gt;flle is not NULL before<br>
+ checking if it is seekable.<br>
+<br>
+devices/vector/gdevpdfp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-20 20:00:33 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=49a8691f19e9d7d1370f157d0cd423b4b5d5a526">49a8691f19e9d7d1370f157d0cd423b4b5d5a526</a>
+<blockquote>
+<p>
+ Fix a performance regression introduced by commit 813b5f48e8<br>
+<br>
+ The fix is to keep the PageUsesOverprint parameter in the device<br>
+ dictionary, not in the outer dictionary, and use it from there.<br>
+<br>
+ It isn't understood why storing in the outer dictionary causes such a<br>
+ substantial performance hit, but profiling shows that the time comes<br>
+ from &quot;dstack_find_name_by_index&quot;. The performance hit showed up with<br>
+ j9_acrobat.pdf of the performance test suite (about 8%).<br>
+<br>
+Resource/Init/pdf_main.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-22 09:51:06 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=db2a48697289ae2d53aeb3bbbf82276f0e85a134">db2a48697289ae2d53aeb3bbbf82276f0e85a134</a>
+<blockquote>
+<p>
+ Automate tesseract build compatibility with clang++<br>
+<br>
+ On MacOS (at least), clang++ requires the addition of the -std=c++17 to enable<br>
+ support of the features that tesseract uses.<br>
+<br>
+ Also, on Linux (at least) clang++ requires -stdlib=libstdc++ in order to<br>
+ pickup a usable stdc++ library.<br>
+<br>
+ So, tweak configure to test whether the compiler accepts the options to do both<br>
+ the above, and if so, add them to the CXXFLAGS used to build tesseract.<br>
+<br>
+ In addition, in configure, pickup CXXFLAGS so custom options can be set on the<br>
+ configure command line.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-22 09:12:19 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f40d70eeb5194a51fc585cb9ac9037c12557a826">f40d70eeb5194a51fc585cb9ac9037c12557a826</a>
+<blockquote>
+<p>
+ Tweak gitlog2changelog.py to exclude the per-commit file list<br>
+<br>
+toolbin/gitlog2changelog.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-22 12:09:55 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4a7db3c313f4c3e0e5ea87510b0d353b4441368f">4a7db3c313f4c3e0e5ea87510b0d353b4441368f</a>
+<blockquote>
+<p>
+ Add /utf-8 command to TESSCXXFLAGS in msvc.mak.<br>
+<br>
+ Suggested by Akira Kakuto. I don't need this myself, but then my<br>
+ default windows codepage is probably different to Akira's. Adding<br>
+ this shouldn't cause any problems.<br>
+<br>
+psi/msvc.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-22 09:11:11 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=73c5567d62b6e9278818c3077c1c3ea3b5ee43ee">73c5567d62b6e9278818c3077c1c3ea3b5ee43ee</a>
+<blockquote>
+<p>
+ Update change log post-9.54.0rc1<br>
+<br>
+doc/History9.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-19 16:14:33 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=26009e688cf4275c252a9e060f30f006c1f1b9de">26009e688cf4275c252a9e060f30f006c1f1b9de</a>
+<blockquote>
+<p>
+ Fix crash in display device (seen with apitest.c).<br>
+<br>
+ When calculating the size for the display, we setup a<br>
+ fake gx_device_memory to call the calculation routine<br>
+ with. Because we hadn't initialised the graphics_type_tag<br>
+ sometimes it would incorrectly assume there was 1 more<br>
+ plane than there should be.<br>
+<br>
+ In calculating the required size, it would therefore add<br>
+ in bitmap_raster(plane[i].depth * width) more bytes for<br>
+ that plane. If plane[i].depth was negative, this would<br>
+ cause the amount of memory we allocate to shrink, and<br>
+ accordingly, we'd allocate too little memory.<br>
+<br>
+ The fix is to ensure that the fake device is always<br>
+ zero'd to start with.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-19 13:39: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=42d688a1c90685d2123540416c60bcdf6b0db7dc">42d688a1c90685d2123540416c60bcdf6b0db7dc</a>
+<blockquote>
+<p>
+ Update man pages to reflect SAFER is now the default.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-19 13:13:21 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=48a8946f886b18b182868a9866b4927f80860510">48a8946f886b18b182868a9866b4927f80860510</a>
+<blockquote>
+<p>
+ Erasepage optimisation - fix invalid device ordering assumption<br>
+<br>
+ The erasepage optimisation device, when checking to see whether the<br>
+ underlying device permitted optimisaton, was assuming that its own child<br>
+ would always be the 'final' device. If we have a chain of subclass<br>
+ devices this might not be true.<br>
+<br>
+ Run down the chain to the fist non-subclass device and check that<br>
+ instead. In future this should be replaced by a spec_op or something<br>
+ but this resolves the problem for now.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-19 09:51: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=a96257ec48dc13a1404990c4a473db88545dcc71">a96257ec48dc13a1404990c4a473db88545dcc71</a>
+<blockquote>
+<p>
+ Update dates, and changelog for 9.54.0rc1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-16 09:24:00 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=905d82cc03d74a69a850eac16596267ed96473a5">905d82cc03d74a69a850eac16596267ed96473a5</a>
+<blockquote>
+<p>
+ Update dates and changelog for 9.54.0 rc1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-18 15:39:30 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=38a768a651fd4d11a6c27792067f59713f141634">38a768a651fd4d11a6c27792067f59713f141634</a>
+<blockquote>
+<p>
+ Drop DynaLab special bbox stretching of metrics<br>
+<br>
+ For historical reasons relating to glyph caching the zchar42_set_cache<br>
+ code used the minimum and maximum of the glyph bounding box and font<br>
+ bounding box when setting the metrics of a glyph.<br>
+<br>
+ This was done for DynaLab (one of the FreeType 'tricky' font types),<br>
+ because these fonts abuse the TrueType 'hinting' mechanism.<br>
+ Unfortunately this results in the wrong origin 1 being sent to<br>
+ setcachedevice2, and hence CDevProc when the font is vertically<br>
+ oriented.<br>
+<br>
+ We no longer use this function for clipping, and the remaining client<br>
+ pdfwrite doesn't use it for clipping but very much does use it for<br>
+ gathering font metrics, so it is vital that these be correct.<br>
+<br>
+ Since it's only used by pdfwrite, and testing suggests that DynaLab<br>
+ fonts are not a problem for this, the code has been removed here. If<br>
+ it should ever prove to be required then we should check the Font to<br>
+ see if it is a DynaLab font. MuPDF has a function is_dynalab() for this<br>
+ and we should use that if we prove to need it.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-17 20:18:44 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=109cae320d32df84b26d668bc03b0068be4482f4">109cae320d32df84b26d668bc03b0068be4482f4</a>
+<blockquote>
+<p>
+ Fix bug 703704: Matte in SMask is indirect reference.<br>
+<br>
+ Thanks to Peter Cherepanov for this fix. This also catches /null Matte<br>
+ entries.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-17 15:33:59 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=bd711e60fb48e0dbedd40742dde58ac1e85a91ec">bd711e60fb48e0dbedd40742dde58ac1e85a91ec</a>
+<blockquote>
+<p>
+ Make --disable-threads incompatible with including OCR<br>
+<br>
+ Tesseract requires threading, even though Ghostscript doesn't actually call any<br>
+ of the parts of tesseract that use threading, there is no sensible way to<br>
+ leave it out.<br>
+<br>
+ So, throw an error if --disable-threads is used when tesseract/leptonica is<br>
+ present. The error includes a note to use &quot;--without-tesseract&quot; to avoid the<br>
+ error.<br>
+<br>
+ Also, fix a typo from a03ce3d6a130c843cb4dd91b7e767706973b4e22<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-17 11:06: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=157aab06770e5b0f3255e45866d578cac8ff861d">157aab06770e5b0f3255e45866d578cac8ff861d</a>
+<blockquote>
+<p>
+ Pick up C++ compiler from configure script<br>
+<br>
+ Rather than rely on the GNU make predefine.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-16 17:48:43 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ef8fc3115ea0361db31599400129c0e980f79ab1">ef8fc3115ea0361db31599400129c0e980f79ab1</a>
+<blockquote>
+<p>
+ Rejig clist_mutate_to_clist for Coverity.<br>
+<br>
+ Coverity spotted us accessing *the_memory without having checked<br>
+ that the_memory != NULL first.<br>
+<br>
+ In fixing that, I've taken the chance to tidy up the function a bit.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-15 13:09:13 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0e0611db144ac91c7b1825f94d100b7505a33a5c">0e0611db144ac91c7b1825f94d100b7505a33a5c</a>
+<blockquote>
+<p>
+ Fix merge error causing CAL SEGVs.<br>
+<br>
+ We were detecting plugins as being old format. This only shows up<br>
+ in testing with CAL.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 14:59:05 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1c60ca5e897375dcd3afbb886fba8808e2e09e12">1c60ca5e897375dcd3afbb886fba8808e2e09e12</a>
+<blockquote>
+<p>
+ Update copyright to 2021<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 15:14:21 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=628909cfa7b776c81461c511a88ee002ec51fcdb">628909cfa7b776c81461c511a88ee002ec51fcdb</a>
+<blockquote>
+<p>
+ Bug 703414 : Halftone artifacts<br>
+<br>
+ There are two different representations of the turn-on-sequence<br>
+ in GS. One of them uses an array of unsigned short integers that<br>
+ indicate what bits get turned on. The array stores an address<br>
+ offset into the bitmap tile that is created for a particular level.<br>
+ The decision to use this representation is made in gsht.c<br>
+ in the gx_ht_alloc_theshold_order method and is based upon the<br>
+ width and height of the threshold array which indicates the total<br>
+ number of addresses or offsets into the tile to reference which<br>
+ bits get turned on in the tile by the turn-on-sequence. The tiles<br>
+ themselves however are forced to have their rows raster aligned meaning<br>
+ that if w*h &lt;= 65535 the offsets into the tile dots can be larger<br>
+ than 65535, which will not fit in the short turn-on-sequence array.<br>
+ The code uses a different representation for the TOS if the number<br>
+ of elements is less than 2000. Then it stores a pointer to a structure<br>
+ for every element. That is the &quot;default&quot; implementation. Here<br>
+ a uint (32-bit) implementation is added for cases where the tile is<br>
+ larger than 65536 (e.g. bigger than 256 x 256). The implementation is<br>
+ the same as the ushort case, but just uses four byte offsets for the TOS.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 16:46:13 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9ba7e720143cc11bfd54c26a548860e738b97dfc">9ba7e720143cc11bfd54c26a548860e738b97dfc</a>
+<blockquote>
+<p>
+ Fix SEGV with -sNupControl=1x2 to pbmraw -r300 Bug693331.pdf<br>
+<br>
+ This was due to the pdf14 getting confused during clist playback when the<br>
+ 'master' page contained more than one nested page with transparency. Each of<br>
+ the nested pages would PUSH, then POP the pdf14 compositor, but since the pdf14<br>
+ compositor remains as the current device, the first POP 'disables' the pdf14<br>
+ compositor and the subsequent PUSH 'recreates' the pdf14 device in active<br>
+ compositing mode. The problem was that the 'recreate' did not perform all of<br>
+ the setup of color_info, cmap_procs, and device procs needed for all of the<br>
+ subsequent clist playback through the compositor.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-10 17:48:37 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=aa26ed7d8cf0edda3db6c15dc7947ee8bea5ba3d">aa26ed7d8cf0edda3db6c15dc7947ee8bea5ba3d</a>
+<blockquote>
+<p>
+ Add additional debug for halftones<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 19:25:00 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3f1195b0523a1d3c8b80a47d7101e31954770767">3f1195b0523a1d3c8b80a47d7101e31954770767</a>
+<blockquote>
+<p>
+ Bug 703687: Fix logic for alpha bits in do_fill_stroke()<br>
+<br>
+ We can only do the GraphicsAlphaBits anti-aliasing if we are drawing with a<br>
+ &quot;pure&quot; color (or a DeviceN color). Basically, not a pattern.<br>
+<br>
+ For fill_stroke that means checking for the fill and stroke colors, but the<br>
+ conditional was erroneously using &quot;or&quot; rather than &quot;and&quot; - so if either<br>
+ color was pure, we'd try to use the alpha buffer, causing incorrect results.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 13:09:52 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=224cafab373865f96f49ac186012bad63b99ff3b">224cafab373865f96f49ac186012bad63b99ff3b</a>
+<blockquote>
+<p>
+ Bug 703324 - restore fill state after fill+stroke path operation<br>
+<br>
+ The file in bug 703324 fills and strokes a rectangle ('B' operator)<br>
+ and sets the fill constant alpha to 1, and the stroke constant alpha<br>
+ to 0, so that the stroke is not drawn. Pointless but that's what it<br>
+ does.<br>
+<br>
+ It then draws some text.<br>
+<br>
+ Now the clist maintains an 'opacity' member, which is set and reset by<br>
+ (amongst other things) looking at the fill and stroke alpha values. When<br>
+ we do a fill+stroke we set the opacity to the fill alpha, and do the<br>
+ fill, then we set it to the stroke alpha and draw the stroke.<br>
+<br>
+ We then do an 'image_fill_masked' operation to draw the text bitmaps.<br>
+ This device method does not take a graphics state as a parameter and so<br>
+ is unable to set the opacity in the device based on the fill alpha. It<br>
+ simply uses whatever opacity is current at the time. Because the<br>
+ fill+stroke left this at the 'stroke' alpha, this is applied to the text<br>
+ which (because the alpha is 0) is then not drawn.<br>
+<br>
+ In addition the graphics state fill constant alpha value was left with<br>
+ the wrong value, but fixing that wasn't sufficient. However we should<br>
+ do both, and this commit resets the fill constant alpha in the graphics<br>
+ state and recalculates the 'opacity'.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 17:05:37 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e2f1611a14000d6a2927ac49a865e5a954dd88b2">e2f1611a14000d6a2927ac49a865e5a954dd88b2</a>
+<blockquote>
+<p>
+ Extract clist setup code from prn and display device.<br>
+<br>
+ Move to a common clist_mutatable function.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 18:38:18 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d15d0ea0873ca27d4f3410d18603bfd0ad890fd5">d15d0ea0873ca27d4f3410d18603bfd0ad890fd5</a>
+<blockquote>
+<p>
+ Fix exports for GPL DLL.<br>
+<br>
+ This was preventing api_test working on windows.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 17:08: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=08215797e95bb9db1c19e42b644829afb04a43ca">08215797e95bb9db1c19e42b644829afb04a43ca</a>
+<blockquote>
+<p>
+ Fix MSVC warning.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 17:07:11 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3657ca38aec1e0b77e9b6c9aae62f03e212475b3">3657ca38aec1e0b77e9b6c9aae62f03e212475b3</a>
+<blockquote>
+<p>
+ Fix some comment typos.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 08:58:30 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=becd66c4064abad46a2c1d2f35710555362a1502">becd66c4064abad46a2c1d2f35710555362a1502</a>
+<blockquote>
+<p>
+ Fix bug 703681. Illegal Mask for image in PDF.<br>
+<br>
+ Thanks to Peter Cherepanov for this fix. Check for the type of the Mask<br>
+ entry, and ignore it (with an Error message) if not array or dictionary.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-11 15:10:21 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a30569c455b412e2f5ee05ad7df69059886f0a7e">a30569c455b412e2f5ee05ad7df69059886f0a7e</a>
+<blockquote>
+<p>
+ Fix ordering of operators in FitPage<br>
+<br>
+ Bug #703685 &quot;Crash when using -dPDFFitPage&quot;<br>
+<br>
+ The 'cvi' in pdf_PDF2PS_matrix in pdf_main.ps here was meant (I think)<br>
+ to apply to the /Rotate value from the page dictionary, but instead<br>
+ was applied to the divisor, 90, which isn't needed because 90 is<br>
+ obviously already an integer.<br>
+<br>
+ If the PDF file (illegally) had a floating point number then the cvi<br>
+ should convert it to an integer, so we need to move the cvi so that it<br>
+ applies to the /Rotate value.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-10 09:11:08 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=91dd2c391c7c68c172d387bd7d2e5904296b68f5">91dd2c391c7c68c172d387bd7d2e5904296b68f5</a>
+<blockquote>
+<p>
+ Fix rangecheck from pdf_info when -dDumpXML is used and lines are &gt; 256 bytes.<br>
+<br>
+ Just dump the XML metadata rather than trying to suppress blank lines.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-10 01:38:44 +0100
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8d4390862d0391430efd65e2bb5f9336231d4ff2">8d4390862d0391430efd65e2bb5f9336231d4ff2</a>
+<blockquote>
+<p>
+ Bug 703653: jbig2dec: Use correct freeing function for JBIG2 images.<br>
+<br>
+ When jbig2_image_compose() errors out, remember to release all allocated<br>
+ pattern images. Previously the most recently allocated image would not<br>
+ be release.<br>
+<br>
+ Finally remember to free the array of images itself.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-09 19:48:59 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f6ba75df38529d3c3d9c57cb9c99429d36ee3072">f6ba75df38529d3c3d9c57cb9c99429d36ee3072</a>
+<blockquote>
+<p>
+ Slightly tidy the tessocr.h interface.<br>
+<br>
+ Delete an unused function, and move the ocr and hocr functions<br>
+ to using ocr_init_api and ocr_fin_api as the others do.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-04 21:14:46 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4d2bf7b009922bef2efdbc3d0c8dcfe5d3a8cdb0">4d2bf7b009922bef2efdbc3d0c8dcfe5d3a8cdb0</a>
+<blockquote>
+<p>
+ Fix Bug 703648. Commit 00e7143ce9 caused this to surface by changing allocator.<br>
+<br>
+ The clist_make_accum_device previously used the target device's allocator which<br>
+ was 'system' VM, and commit 00e7143ce9 changed it to use 'local' VM which is<br>
+ subject to save/restore. The sample file resutled in an extra rc_decrement of<br>
+ the device on page 4 (from gx_pattern_accum_finalize during the restore).<br>
+<br>
+ Fix this by using 'stable_memory' (from the mem allocator passed in) prevents<br>
+ the restore from affecting the pattern-clist accumulator.<br>
+<br>
+ Note the simple command line to reproduce is:<br>
+ bin/gs -r1200 -sDEVICE=pgmraw -dBufferSpace=16m -o /dev/null \<br>
+ Ad_Quark.ps Ad_Quark.ps Ad_Quark.ps<br>
+ which results in &quot;corrupted double-linked list&quot;<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-09 09:35:04 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=62c5e1b5b6079cabf9008f12f7e038c413dda2d0">62c5e1b5b6079cabf9008f12f7e038c413dda2d0</a>
+<blockquote>
+<p>
+ Prevent segfault from -Z^ debug output.<br>
+<br>
+ Tripped over this while trying to use it for reference count debug.<br>
+ Tested on linux and Windows. No more hackish than the other constants<br>
+ in this function.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-09 12:13:35 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e8ae31abf5a2b365f086d3ccf34f64c47503f565">e8ae31abf5a2b365f086d3ccf34f64c47503f565</a>
+<blockquote>
+<p>
+ Fix documentation for moved display device test.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-09 11:54:31 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8747ffd4e32faab3fd08b48bc443d4094ae21a5f">8747ffd4e32faab3fd08b48bc443d4094ae21a5f</a>
+<blockquote>
+<p>
+ Documentation fix - gdevdsp.h is no longer in base<br>
+<br>
+ The links to gdevdsp.h in use.htm were (mostly) referencing base when<br>
+ in fact the file is in the devices sub-directory.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-01 18:28:54 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a5185dc45dd8c1981fbe5f46a0577ec0378bf449">a5185dc45dd8c1981fbe5f46a0577ec0378bf449</a>
+<blockquote>
+<p>
+ Fix compositor operation with subclassing.<br>
+<br>
+ Compositors/PS2Write/Subclassing/Clist interact badly, due to the need<br>
+ for the subclass code to 'tightly' wrap the original device, rather<br>
+ than wrapping the created compositor.<br>
+<br>
+ Use a new gxdso to handle the insertion of the device lower down the<br>
+ device chain.<br>
+<br>
+ This frees the subclass device of the need to know how to insert itself<br>
+ into different types of device.<br>
+<br>
+ Unfortuntely, the pdf14clist devices, when popped, assume that they<br>
+ tightly wrap the actual clist device. This causes SEGVs when there<br>
+ is actually a subclass device in the way.<br>
+<br>
+ Accordingly, we update that code to find the correct clist device<br>
+ in the stack, by using a new gxdso added for this purpose.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-04 09:27:34 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8fe5fb55424ebcc3ed66e8ce9a0fbfaac57aaa85">8fe5fb55424ebcc3ed66e8ce9a0fbfaac57aaa85</a>
+<blockquote>
+<p>
+ Do not allow psd devices to change color model<br>
+<br>
+ This keeps the psdcmyk device cmyk based and the psdrgb device rgb based.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-03 13:08:34 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8d95baab43318d1feecb70ee326734a883545484">8d95baab43318d1feecb70ee326734a883545484</a>
+<blockquote>
+<p>
+ Fix erasepage_optimization device to allow for other subclass devices.<br>
+<br>
+ The epo device assumed that it was the current device, then checked the child<br>
+ of that device to decide if it could optimize. If another subclass device was<br>
+ the current device the decision could be invalid.<br>
+<br>
+ Note that the comparison of the child's fillpage proc is not ideal, but the<br>
+ change to that is more involved and risky, and left for a subsequent change.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-01 10:26:57 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7a3dd047a07ed3f24bd388b72432990d9cd508fb">7a3dd047a07ed3f24bd388b72432990d9cd508fb</a>
+<blockquote>
+<p>
+ Fix page independence logic on the examples PostScript files.<br>
+<br>
+ Back in 2001, commit f78b0481 added save/restore around the examples files,<br>
+ but did not follow the recommendations from the PostScript Language Reference<br>
+ Manual about save/restore and page independence and Technical note #5001.<br>
+ The PLRM states (in section 3.7.3): &quot;Each page has a save at the beginning<br>
+ and a restore at the end, immediately before the showpage operator.&quot;<br>
+<br>
+ This fixes the files, and allows them to work properly with usage that<br>
+ expects correct page independence including -sNupControl=WxH and the use<br>
+ of setpagedevice BeginPage/EndPage actions.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-28 08:20:57 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d9a13c96f9ac0cfcaaa843b7e51780de114cf48a">d9a13c96f9ac0cfcaaa843b7e51780de114cf48a</a>
+<blockquote>
+<p>
+ NupControl improvements to prevent save/restore problems.<br>
+<br>
+ The NupControl string needs to be a reference counted to work with save/<br>
+ restore, and when the parameter is changed the new value needs to be<br>
+ propagated to children devices. The structure containing the string is<br>
+ adpated (simplified slightly) from the PageList implementation.<br>
+<br>
+ Note that the parents and children references must be included in the ref_count<br>
+ when the NupControl structure is updated (example if 'epo' is installed, when<br>
+ it uninstalls itself, cannot free the the structure when it does rc_decrement).<br>
+<br>
+ Minor comment change to devices/gdevbit.c to change NupList to NupControl.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-03 10:29:33 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=648a17ed91e089c11621053201c97c93304086c9">648a17ed91e089c11621053201c97c93304086c9</a>
+<blockquote>
+<p>
+ Update gen_ordered to provide improved debug output<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-03 12:28:02 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=359cf3ce11c32a5c05c24028d8785902799cb2fc">359cf3ce11c32a5c05c24028d8785902799cb2fc</a>
+<blockquote>
+<p>
+ Add another nmake variant.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-02 15:26:24 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f74dcd064d5de5e13ad907d7ac270bc82bb7858b">f74dcd064d5de5e13ad907d7ac270bc82bb7858b</a>
+<blockquote>
+<p>
+ Extract build: Ensure zlib is used as an include path for extract.<br>
+<br>
+ Without this, the Windows build fails, and (presumably) the linux<br>
+ build is picking up the system zlib.h.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-02 16:33: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=4698574e2711da90888915f0c5a7dc4644153689">4698574e2711da90888915f0c5a7dc4644153689</a>
+<blockquote>
+<p>
+ History/News updates<br>
+<br>
+ And add an html link target for BlackText<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-02 09:21:58 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=590d3744111e267e2cebc09f3f7f98e6410704be">590d3744111e267e2cebc09f3f7f98e6410704be</a>
+<blockquote>
+<p>
+ Update changelog and dates for 9.54.0 RC 1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-02 15:25:21 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=db7f4bfc013549b22d8c30fbb75fc639bfb35799">db7f4bfc013549b22d8c30fbb75fc639bfb35799</a>
+<blockquote>
+<p>
+ MSVC build: Detect and use 'extract' directory if it exists.<br>
+<br>
+ This can be overridden by setting EXTRACT_DIR.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-02 12:20:24 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f11ff15600c9d6ed8032f671f2e693388d01cc1">4f11ff15600c9d6ed8032f671f2e693388d01cc1</a>
+<blockquote>
+<p>
+ Check for extract in a &quot;default&quot; location<br>
+<br>
+ i.e. ghostpdl/extract<br>
+<br>
+ as well as still allowing --with-extract-dir for custom locations.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-02 12:23:17 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6ac61452f9717536430a315fc832b5c64b3c02eb">6ac61452f9717536430a315fc832b5c64b3c02eb</a>
+<blockquote>
+<p>
+ Fix tessocr.cpp building on linux.<br>
+<br>
+ Missing include file.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-02 09:17: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=6425f74266dd66f6064dc8f24d0b827e39a18855">6425f74266dd66f6064dc8f24d0b827e39a18855</a>
+<blockquote>
+<p>
+ Tweaks and corrections for News.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-01 11:17: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=59eea43bf3f3e09182c0457d94b91c347f54bfbd">59eea43bf3f3e09182c0457d94b91c347f54bfbd</a>
+<blockquote>
+<p>
+ Fix seg faults in subclassing<br>
+<br>
+ Commit a754bd375a625368567947b1e1b77ce3e5c06a3f fixed a different class<br>
+ of seg faults, but unfortunately removed a crucial line of code.<br>
+<br>
+ When the child device has pushed a compositor, we still need to check<br>
+ to see if the compositor is pointing at the child device. If it is not<br>
+ then the compositor must have pushed more than a single device, so it<br>
+ is not safe to behave as if the target of the compositor is our child<br>
+ device.<br>
+<br>
+ Originally I had hoped to walk down the forwarding devices until we<br>
+ reach our device, but the actual behaviour of the pdf14 device in<br>
+ combination with the clist, when the final device is ps2write renders<br>
+ that all but impossible, as well as unnecessary.<br>
+<br>
+ In this case the compositor action starts by defining a new device,<br>
+ It then pushes a pdf14_accum device (there are 3, one per device space)<br>
+ it then pushes the pdf14clist device in front of that. Finally it turns<br>
+ the device it first created into a forwarding device, and points its<br>
+ target at the original device.<br>
+<br>
+ So we return with 3 new devices pushed, not just one. However, the<br>
+ final forwarding device is in fact forwarding to the subclassing device<br>
+ and the device reference counting magic is applied to the forwarding<br>
+ device, which means we don't need to dance around with the references<br>
+ to the subclassing device and child.<br>
+<br>
+ We could detect this condition by checking the name of the target device<br>
+ of the pdf14clist forwarding device, but that isn't really any better<br>
+ than simply assuming that the compositor takes care of inserting new<br>
+ devices correctly. The pdf14_accum devices are not forwarding devices,<br>
+ they store the pdf14 device in a member called saved_pdev14, so we can't<br>
+ readily follow that either. Finally there is no way to determine if a<br>
+ device is a forwarding device, or a gx_device_pdf14_accum type which<br>
+ limits the amount of checking we cna perform.<br>
+<br>
+ This is an interim commit to work around the problem, because we are<br>
+ about to do a release. A better fix which eliminates all (we hope)<br>
+ of the hidden assumptions and magic knowledge in the code here<br>
+ will be committed shortly, but may be too risky for the release.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-01 14:35:15 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=109fb95822a5c4fa6d7dc99ed120149acafd8341">109fb95822a5c4fa6d7dc99ed120149acafd8341</a>
+<blockquote>
+<p>
+ Edit release highlights text<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-01 11:58: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=79d04193b05200e1dd606c583c0b4e0b46520217">79d04193b05200e1dd606c583c0b4e0b46520217</a>
+<blockquote>
+<p>
+ Tidy up/add labels for URL destinations<br>
+<br>
+ A few in VectorDevices.htm were wrong, and I added one in that file and a couple<br>
+ in Use.htm for convenience.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-03-01 13:01:02 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6a3a11e8e9a1420702867afdd555dff62ab7ba20">6a3a11e8e9a1420702867afdd555dff62ab7ba20</a>
+<blockquote>
+<p>
+ doc/VectorDevices.htm: added information about DOCX device.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-25 09:36:18 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fa775ffdd2ab6dff3b3178f9d36975308eeb9893">fa775ffdd2ab6dff3b3178f9d36975308eeb9893</a>
+<blockquote>
+<p>
+ Add documentation for NupControl (N-up printing) feature.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-27 14:51:38 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f06760e64c088ea24cd6a41c07cb459ecc690b05">f06760e64c088ea24cd6a41c07cb459ecc690b05</a>
+<blockquote>
+<p>
+ Add Colorant name for HalftoneType 5 components to -Zh output<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-26 08:03: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=1e30bb81fae075519db85af1bc7fb1658891627d">1e30bb81fae075519db85af1bc7fb1658891627d</a>
+<blockquote>
+<p>
+ Bug 703273: Prioritise Nonsymbolic over Symbolic font flag<br>
+<br>
+ The font in this PDF has it descriptor flags set to 36, that is bit 3 (Symbolic)<br>
+ and bit 6 (Nonsymbolic) are both set. Since the two flags are mutually exclusive<br>
+ this is clearly broken!<br>
+<br>
+ Previously, we only test the Symbolic flag, since !Symbolic should imply<br>
+ Nonsymbolic, which caused us to use the wrong encoding scheme.<br>
+<br>
+ Now, we'll act on the Symbolic flag iff the Nonsymbolic flag is not set.<br>
+<br>
+ (Originally a mupdf report, that also exhibited in Ghostscript).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-26 09:38:27 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5d0bd867b7d9fce50119adeae293568375fa8847">5d0bd867b7d9fce50119adeae293568375fa8847</a>
+<blockquote>
+<p>
+ Fix a few typos in the documentation of UseOCR for pdfwrite<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-22 19:57:35 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1aa6a230ecc56ee3cb02459fbf6fc5e400e26eba">1aa6a230ecc56ee3cb02459fbf6fc5e400e26eba</a>
+<blockquote>
+<p>
+ Bug 703265: Tweak create_compositor device method.<br>
+<br>
+ Update create_compositor device method, so that it always returns<br>
+ the compositor device (or the leaf device if there is no specific<br>
+ compositor device). The device now returns 1 if we created a<br>
+ compositor device to wrap the given device.<br>
+<br>
+ This should enable us to identify exactly the cases where forwarding<br>
+ devices need to update which device they forward to.<br>
+<br>
+ In particular, this allows us to remove the horribly fragile code<br>
+ in apply_create_compositor in gxclrast.c, and to ensure that we<br>
+ correctly identify the 'new compositor' case.<br>
+<br>
+ This avoids us sending stuff to the wrong device, and having to<br>
+ cope with a slew of warnings.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-25 09:16:33 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8bc7ba4ba7df15310d406d5a1d8f6b755b04d13b">8bc7ba4ba7df15310d406d5a1d8f6b755b04d13b</a>
+<blockquote>
+<p>
+ Update dates/docs for 9.54.0 RC1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-22 18:53:09 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5fc905ca8f04aa2a1088c3af635fd38bf9c8c3a0">5fc905ca8f04aa2a1088c3af635fd38bf9c8c3a0</a>
+<blockquote>
+<p>
+ Remove Luratech integration code/makefiles<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-22 14:11:46 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=af92546c044b18a1796e269aba58c246ca977290">af92546c044b18a1796e269aba58c246ca977290</a>
+<blockquote>
+<p>
+ Change GS_PRODUCT string, and dates for release<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-22 10:32: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=1430230bdf35928e5fb75eba631db3e5b89ce845">1430230bdf35928e5fb75eba631db3e5b89ce845</a>
+<blockquote>
+<p>
+ Bug 703589: handle overlapping ranges in TTF format 4 cmaps<br>
+<br>
+ The fonts embedded in this file contain a large number of overlapping/repeated<br>
+ ranges in the format 4 cmap table definition - which is *strictly* not permitted<br>
+ according to the spec.<br>
+<br>
+ For example:<br>
+ scode=117 ecode=117<br>
+ scode=117 ecode=117<br>
+ scode=118 ecode=118<br>
+ scode=118 ecode=118<br>
+ scode=119 ecode=119<br>
+ scode=119 ecode=119<br>
+ scode=120 ecode=120<br>
+ scode=120 ecode=120<br>
+ scode=121 ecode=121<br>
+ scode=121 ecode=121<br>
+<br>
+ Turns out, other consumers use the *first* mapping they encounter where, because<br>
+ we use a Postscript dictionary to store the cmap table, later definitions<br>
+ overwrite earlier ones.<br>
+<br>
+ Resolved by checking if the key already exists in the dictionary, and not<br>
+ overwriting it if it does.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-10 09:35:39 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9c7347c8e1bb146b9ae27b35b8207e10a7c5dc43">9c7347c8e1bb146b9ae27b35b8207e10a7c5dc43</a>
+<blockquote>
+<p>
+ Bug 703326: Create a new clip path for clist typed image handling<br>
+<br>
+ Stupid fuzzing file uses a Type 3 font with a sampled image in the glyph<br>
+ proc. The image uses a procedure as a data source. The glyph proc does<br>
+ gsave, and the image data source procedure does a grestore. So by the time we<br>
+ clean up the image &quot;samples&quot;, the gstate and the clip path it contains have<br>
+ gone. So the image enumerator's reference to the clip path is left dangling.<br>
+<br>
+ Copying, rather than referencing, that clip path solves the crash.<br>
+<br>
+ Fixes oss-fuzz issue: 26987<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-19 17:34:35 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2c7a78d3e2ae6a3053827e915735e29eb16e12ba">2c7a78d3e2ae6a3053827e915735e29eb16e12ba</a>
+<blockquote>
+<p>
+ Catch potential NULL derefence in gdev_prn_close.<br>
+<br>
+ Thanks to Robin for spotting this.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-19 11:02:40 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fc5aa3b392cbd7c879b049d805a2afd158a05eb6">fc5aa3b392cbd7c879b049d805a2afd158a05eb6</a>
+<blockquote>
+<p>
+ Fix buffer overrun in ASCIIHexEncode<br>
+<br>
+ This exhibited as a memory corruption error (buffer overrun) in pdfi.<br>
+<br>
+ The ASCIIHexEncode filter is required to write linfeed characters to the<br>
+ output at least every 80 (output characters). Ghostscript chooses to do<br>
+ so every 64 characters. So every 64 characters the filter emits a<br>
+ linefeed, crucially without checking whether there is room in the<br>
+ output buffer.<br>
+<br>
+ In order to determine how many linefeed characters we are going to need<br>
+ to write into any given output buffer we divide the number of characters<br>
+ in the output buffer by 65 (64 characters + linefeed), taking into<br>
+ account any character slaready emiitted (stored as 'count' in the stream<br>
+ state). We subtract that from the size of the output buffer, in order<br>
+ to ensure that there is enough spare space for the linefeeds.<br>
+<br>
+ Unfortunately, this is not sufficient. Consider an output buffer 194<br>
+ bytes in size, on the first pass. We divide that by 65, which tells us<br>
+ that 2 complete buffers will fit, so we need to reserve space in the<br>
+ output for 2 bytes. We subtract 2 from the count, giving 192, We then<br>
+ proceed to write the output data. We write 64 bytes of data, then a<br>
+ linefeed, then 64 bytes of data, then a linefeed, then 64 bytes of data.<br>
+ Total 194 bytes.<br>
+<br>
+ At this point we have exhausted the output buffer, but because we have<br>
+ written 64 bytes, we unconditionally write a linefeed. This is written<br>
+ one byte beyond the end of the buffer.<br>
+<br>
+ There are many ways to address this but I've chosen to change the<br>
+ divisor from 65 to 64. This may mean that occasionally we will write one<br>
+ input character (2 output characters) less than the maximum possible<br>
+ to the output, but it will prevent the possibility of a buffer overrun.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-18 17:59:26 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d4c0981839bb2194040a9d15c8772e266ae235e3">d4c0981839bb2194040a9d15c8772e266ae235e3</a>
+<blockquote>
+<p>
+ Fix bug 703557. Replace .sort procedure for use in SAFER mode<br>
+<br>
+ Thanks to Peter Cherepanov for this patch.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-18 08:19:45 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a32419cebfe2db81aa5e838b95e5770241a22fb1">a32419cebfe2db81aa5e838b95e5770241a22fb1</a>
+<blockquote>
+<p>
+ Add Page Spot color list to output info<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-18 08:07:22 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=32c912d6d6b12956f69056c0e7f3050c5aabf2d4">32c912d6d6b12956f69056c0e7f3050c5aabf2d4</a>
+<blockquote>
+<p>
+ Address Coverity 365984 -- 'code' variable set but not used before changed.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-18 15:52:00 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4fa213b9cd6f310bc6dd236ecce2d549ed3c5a55">4fa213b9cd6f310bc6dd236ecce2d549ed3c5a55</a>
+<blockquote>
+<p>
+ devices/vector/gdevdocxw.c: default to spacing=0 when calling extract_process().<br>
+<br>
+ This gives better output, e.g. for zlib.3.pdf.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-16 15:13:40 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cda1ad8f402829c4677f73d8f805b119632dad5f">cda1ad8f402829c4677f73d8f805b119632dad5f</a>
+<blockquote>
+<p>
+ devices/vector/gdevdocxw.c: fixed creation of .docx when not using file-per-page.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-16 15:01:27 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4e9c31c3b6660d50afbca498ceddf0179ca2540c">4e9c31c3b6660d50afbca498ceddf0179ca2540c</a>
+<blockquote>
+<p>
+ toolbin/localcluster/clusterpush.pl: have rsync expand links if product is extractgs.<br>
+<br>
+ This allows one to have ghostpdl:extract be a soft link, e.g.:<br>
+ extract -&gt; ../mupdf/thirdparty/extract<br>
+<br>
+ Also use rsync -i instead of -v if $(verbose) is set so that one can see<br>
+ exactly what files are being transferred etc.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-16 14:58:47 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=895c5bc12814d4106a106afaddea5dcdd2d0519d">895c5bc12814d4106a106afaddea5dcdd2d0519d</a>
+<blockquote>
+<p>
+ toolbin/localcluster/clusterpush.pl: fix exclude of extract binaries within ghostpdl.<br>
+<br>
+ The previous exclude arg only worked when extract directory was<br>
+ thirdparty/extract inside mupdf (typically a submodule).<br>
+<br>
+ Also added exclusion of extract/test/generated/ to avoid locally-generated<br>
+ files being uploaded.<br>
+<br>
+ Restored exclude of /src/build/ because needed for product=extract.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-16 14:55:36 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2e06b811daafbc95487727f88b9ec7398a250963">2e06b811daafbc95487727f88b9ec7398a250963</a>
+<blockquote>
+<p>
+ psi/msvc.mak: remove 'Not building with extract' diagnostic.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-18 16:44:43 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fafb962c4f57b4b7d8e724414e3762f209099b99">fafb962c4f57b4b7d8e724414e3762f209099b99</a>
+<blockquote>
+<p>
+ Windows gpcl6/ufst project: use better/correct targets<br>
+<br>
+ Firstly, the recursive call to nmake was using the wrong target name (an<br>
+ internal use target), so fix that to use the &quot;real&quot; target.<br>
+<br>
+ Secondly, give the &quot;real&quot; target a better name, more in keeping with other<br>
+ equivalents.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-18 09:51:01 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a3cfccc2401222818dd4d587fd5c695811427bc4">a3cfccc2401222818dd4d587fd5c695811427bc4</a>
+<blockquote>
+<p>
+ Initialise some PDF-specific portions of the graphics state<br>
+<br>
+ The text rendering matrix and text line matrix, which are PDF-specific,<br>
+ were not being initialised when the graphics state was created. This<br>
+ should not be a problem in normal operation because the PDF interpreter<br>
+ should always initialise them before use.<br>
+<br>
+ However, during development on pdfi it did show up so this commit<br>
+ initialises the matrices to the identity.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-17 23:01:03 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=72fcae41c44e4cf33e57b34b748521a00612be21">72fcae41c44e4cf33e57b34b748521a00612be21</a>
+<blockquote>
+<p>
+ Bug 703578 : XPS to PDF missing stroke<br>
+<br>
+ Caused by my &quot;fix&quot; for the pattern issue. I was inadvertently setting<br>
+ ca and CA to 0 during the gradient strokes.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-17 13:05:35 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=331fcb49b62a615976711cccdd3ff9796152a323">331fcb49b62a615976711cccdd3ff9796152a323</a>
+<blockquote>
+<p>
+ Fix bug 703245: bitmap size exceeds buffer.<br>
+<br>
+ The pdf14 compositor changes the color depth to 8 for a SMask, but the<br>
+ compositor actions were not being put in all the bands needed. In this<br>
+ case the copy_color_alpha was output from the interpolation logic because<br>
+ the image gridfitting expanded the image. Fix it by expanding the top and<br>
+ bottom limits for the &quot;temp_cropping&quot; which controls the RECT loop writing<br>
+ the compositor info to the bands.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-17 19:32:11 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8608819c8531174290d6075ad5747bd0b0f32d4b">8608819c8531174290d6075ad5747bd0b0f32d4b</a>
+<blockquote>
+<p>
+ Bug 703577: Correctly initialise texture data pointer.<br>
+<br>
+ The ROP in use was failing to initialise the texture data pointer.<br>
+ Amazing that this doesn't show more problems.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-17 08:16:25 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a28c4d3d22156086db3b53011824a88847d114e1">a28c4d3d22156086db3b53011824a88847d114e1</a>
+<blockquote>
+<p>
+ Minor improvement to gx_ht_construct_threshold debug<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-16 22:35:57 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7a3df79b2b0e0725753a0eac84fb205341cc9fed">7a3df79b2b0e0725753a0eac84fb205341cc9fed</a>
+<blockquote>
+<p>
+ Bug 703404: XPS to pdfwrite patterns<br>
+<br>
+ Patterns that are filled with glyphs and then subsequently<br>
+ filled with another pattern (Visual brush in XPS) was not<br>
+ working when going to pdfwrite due to the fact that<br>
+ gs_text_begin gets called by the XPS interpreter<br>
+ before we have finished the pattern fill of the glyph.<br>
+ This ends up referencing the pattern that is not done<br>
+ which ends badly for high level patterns. Instead<br>
+ if we are already in a high level pattern, set the color<br>
+ to just a gray. Then after the gs_text_begin, the XPS<br>
+ interpreter sets the brush to the visual brush which is<br>
+ subsequently collected. Fixing this, has revealed another<br>
+ XPS to PDF bug where we are not doing shading fills of glyphs<br>
+ correctly (at least when dealing with patterns).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-17 17:28:29 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=66200b6fafe8b4de6fd11d1b38ccb85eb3d37d83">66200b6fafe8b4de6fd11d1b38ccb85eb3d37d83</a>
+<blockquote>
+<p>
+ Add the cup &quot;images&quot; directory back so the docs work<br>
+<br>
+ The cups source has shtml documentation dotted through it, and that references<br>
+ images in the &quot;images&quot; directory (which we removed originally, thinking it<br>
+ wasn't necessary).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-17 16:04:27 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=82dce7f8f6b5218f7943eadff0f01d0e278850fa">82dce7f8f6b5218f7943eadff0f01d0e278850fa</a>
+<blockquote>
+<p>
+ Update lcms2mt to lcms2 2.12.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-16 14:28:52 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5882f2d765a9348c6f6e2cc45353a06924930c88">5882f2d765a9348c6f6e2cc45353a06924930c88</a>
+<blockquote>
+<p>
+ Chunk allocator was using unsigned int rather than size_t.<br>
+<br>
+ Both in the main allocator routine and in the structures. Solved<br>
+ here.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-15 17:22:28 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a634d187722befab735da23957d938f156b6cf8f">a634d187722befab735da23957d938f156b6cf8f</a>
+<blockquote>
+<p>
+ Change macro names to be less confusing.<br>
+<br>
+ The graphics state contains pairs of color/colorspaces. The 0th ones<br>
+ are known as 'current' ones. The 1st ones have historically been known<br>
+ as 'alt' ones.<br>
+<br>
+ This nomenclature is held to be confusing, as 'alternate'<br>
+ colors/colorspaces mean something quite different. We therefore update<br>
+ the macros etc to refer to these as 'swapped' ones, which fits better<br>
+ into our usage.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-15 16:26:18 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a67862f2f7ec3826ac1f55947ebdbfe740c1829f">a67862f2f7ec3826ac1f55947ebdbfe740c1829f</a>
+<blockquote>
+<p>
+ Fix 'cast away const' warning in gdevplnx.c<br>
+<br>
+ We do this by splitting gstate_clone into gstate_clone_for_gsave<br>
+ and gstate_clone_for_gstate. The latter can have the source gstate<br>
+ as being const, as you'd expect.<br>
+<br>
+ This enables gs_gstate_copy to similarly take a const gstate, as<br>
+ you'd expect.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-15 17:09:20 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4618b1dea2e55fa0a39f8fa216e4965785ed8d21">4618b1dea2e55fa0a39f8fa216e4965785ed8d21</a>
+<blockquote>
+<p>
+ Squash warnings in gdevwpr2.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-15 16:24:41 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=83118eaa3e8733d8755eef21b3b404ce0ee97123">83118eaa3e8733d8755eef21b3b404ce0ee97123</a>
+<blockquote>
+<p>
+ Add cs_adjust_altcounts_icc.<br>
+<br>
+ This enables us to avoid swapping colors twice in every<br>
+ gstate_clone.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-16 19:58:28 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=564e9365b8803903d077cd7deca247e65d8f7a29">564e9365b8803903d077cd7deca247e65d8f7a29</a>
+<blockquote>
+<p>
+ Memento fix: Memento_strdup was inconsistently defined.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-15 19:09:50 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f95b2611921546b424d899a5828341f6c4c9a52a">f95b2611921546b424d899a5828341f6c4c9a52a</a>
+<blockquote>
+<p>
+ Add 'extractmu' and 'extractgs' to clusterpush.pl<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-09 17:48:35 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=eff4e8fca8ebbc75b00e7c1d2e672d17090b2222">eff4e8fca8ebbc75b00e7c1d2e672d17090b2222</a>
+<blockquote>
+<p>
+ Quell Memento warnings in debug non-Memento builds.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-15 12:34:05 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=19baed479febdc6372c7b3fccf6e97d71fca1b95">19baed479febdc6372c7b3fccf6e97d71fca1b95</a>
+<blockquote>
+<p>
+ Squash warnings in DEBUG code in gsalloc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-11 09:27:23 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1efe1f702f9723dec2803395cf4679593987c422">1efe1f702f9723dec2803395cf4679593987c422</a>
+<blockquote>
+<p>
+ Bug 703550: handle escaped percent chars in file access controls<br>
+<br>
+ The separating devices make a (fairly blunt) effort to avoid attempting to use<br>
+ proscribed characters in file names for separations (for example, '/', '\',<br>
+ etc). As part of this some characters can be replaced with escaped percent<br>
+ chars - so the single percent character survives a later call to a formatted<br>
+ string function (sprintf).<br>
+<br>
+ This ended up foxing the file access validation code which added the fully<br>
+ escaped file name string to the permit write table, but later attempted to<br>
+ validate a file name post sprintf, where the escaping had been undone.<br>
+<br>
+ So, add code to remove escape '%' characters before adding the string to the<br>
+ file access permit lists.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-12 14:33:58 +0000
+</strong>
+<br>Peter Cherepanov &lt;sphinx.pinastri@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0ca4ae94020a1e3b48c337759ccb9fc0b3af61ec">0ca4ae94020a1e3b48c337759ccb9fc0b3af61ec</a>
+<blockquote>
+<p>
+ Bug 702910: Fix mkromfs for THREADSAFE build<br>
+<br>
+ Since local versions of errprintf_nomem() and errprintf() are mostly<br>
+ identical, we can just call errprintf() with a dummy mem argument.<br>
+<br>
+ The &quot;mem&quot; argument for errprintf() inside GhostPDL is used to ensure<br>
+ the error prints are directed to/through the correct gs_lib_ctx<br>
+ instance for the current thread<br>
+<br>
+ This is safe because, mkromfs is only using during the build, and won't<br>
+ ever implement threading, thus has no need to worry about the extra<br>
+ parameter.<br>
+<br>
+ (slightly tweaked patch to keep working without THREADSAFE)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-12 14:30:44 +0000
+</strong>
+<br>Peter Cherepanov &lt;sphinx.pinastri@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=28d3245fbaff5f6edc74fe3fc21237d69672e947">28d3245fbaff5f6edc74fe3fc21237d69672e947</a>
+<blockquote>
+<p>
+ Bug 703294: Fix Ghostscript build for Android<br>
+<br>
+ Header files shifted around so that the redefinition of printf happens<br>
+ after cdefs.<br>
+<br>
+ Also removes redundant CONTDEVH definition from contrib/contrib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-23 14:09:31 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b151406bbf22fb9001895f856168166f2ecf7fe2">b151406bbf22fb9001895f856168166f2ecf7fe2</a>
+<blockquote>
+<p>
+ Added docxwrite device; uses extract library to write docx output.<br>
+<br>
+ Summary:<br>
+ This adds a new docxwrite device which generates docx files.<br>
+<br>
+ Unlike the txtwrite device, we don't output xml for later use by<br>
+ extract-exe or store information about spans in arrays. Instead we call<br>
+ extract functions such as extract_add_char() directly.<br>
+<br>
+ Code changes:<br>
+ Have moved txtwrite and docxwrite common code into new devices/vector/doc_common.{c,h}.<br>
+<br>
+ Shared types and functions are currently:<br>
+ txt_glyph_width_t<br>
+ txt_glyph_widths_t<br>
+ txt_glyph_widths()<br>
+ txt_get_unicode()<br>
+ txt_char_widths_to_uts()<br>
+ txt_calculate_text_size()<br>
+<br>
+ Building:<br>
+ By default we do not build with Extract and there will be no docxwrite<br>
+ device in the final executables.<br>
+<br>
+ To build with Extract, specify the location of the extract checkout to<br>
+ build and link with.<br>
+<br>
+ Unix:<br>
+ ./autogen.sh --with-extract-dir=&lt;extract-dir&gt;<br>
+<br>
+ Windows:<br>
+ Set environmental variable EXTRACT_DIR=&lt;extract-dir&gt; when building,<br>
+ e.g.:<br>
+ EXTRACT_DIR=&lt;extract-dir&gt; devenv.com windows/GhostPDL.sln /Build Debug /Project ghostscript<br>
+<br>
+ On both Unix and Windows we exit with an error message if the specified<br>
+ location does not exist.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-12 03:39:30 -0800
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=833dc8c9ffde58f001308b303c8d7956107633a1">833dc8c9ffde58f001308b303c8d7956107633a1</a>
+<blockquote>
+<p>
+ Fix build failure with HAVE_VALGRIND and not PACIFY_VALGRIND<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-12 15:25:56 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=180419375973b9ce4664286a67106d712260ef7f">180419375973b9ce4664286a67106d712260ef7f</a>
+<blockquote>
+<p>
+ Remove .setpdfwrite from the documentation<br>
+<br>
+ Deprecated in 9.50 removed in the next release (9.54)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-12 10:34:23 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7861fcad13c497728189feafb41cd57b5b50ea25">7861fcad13c497728189feafb41cd57b5b50ea25</a>
+<blockquote>
+<p>
+ oss-fuzz 30715: Check stack limits after function evaluation.<br>
+<br>
+ During function result sampling, after the callout to the Postscript<br>
+ interpreter, make sure there is enough stack space available before pushing<br>
+ or popping entries.<br>
+<br>
+ In thise case, the Postscript procedure for the &quot;function&quot; is totally invalid<br>
+ (as a function), and leaves the op stack in an unrecoverable state (as far as<br>
+ function evaluation is concerned). We end up popping more entries off the<br>
+ stack than are available.<br>
+<br>
+ To cope, add in stack limit checking to throw an appropriate error when this<br>
+ happens.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-11 22:32:50 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ea1624205c8e1ca936bd38a6095a0dd1880e7287">ea1624205c8e1ca936bd38a6095a0dd1880e7287</a>
+<blockquote>
+<p>
+ Fix hang condition detected on Windows release build.<br>
+<br>
+ The NupControl commit changed 'gx_device_set_hwsize_from_media' to call the<br>
+ dev_spec_op of the parent device, but the body of the while loop to find the<br>
+ uppermost parent could hang.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-11 11:12:34 -0800
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=76b7cdd9c407afc5c620dbfb79770bb5583cf532">76b7cdd9c407afc5c620dbfb79770bb5583cf532</a>
+<blockquote>
+<p>
+ Pad PDF14 buffer allocations when building with CAL.<br>
+<br>
+ This allows for SSE/AVX to overread slightly when reading<br>
+ 16 bytes at a time.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-10 18:07:07 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b5e44d6709642727ee524cccd2b5ab09f2e48572">b5e44d6709642727ee524cccd2b5ab09f2e48572</a>
+<blockquote>
+<p>
+ oss-fuzz 30795: handle remap_color failure in clist_begin_typed_image<br>
+<br>
+ In this case &quot;remap_color&quot; is gx_concretize_ICC() and the link profile<br>
+ creation fails. Previously we were ignoring the error, and trying to use the<br>
+ resulting (invalid) color space.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-09 14:17:01 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7351373f5e3e8d9cd8c75be7d176570f95bd7c97">7351373f5e3e8d9cd8c75be7d176570f95bd7c97</a>
+<blockquote>
+<p>
+ Add a VS project to build gpcl6 with ufst<br>
+<br>
+ (stemmed from Bug 703415)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-09 14:08: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=7a92c21b4a842cfa90134eb46544d142cc4c13d0">7a92c21b4a842cfa90134eb46544d142cc4c13d0</a>
+<blockquote>
+<p>
+ Bug 702362: &quot;make soinstall&quot; install GhostPDL<br>
+<br>
+ If available, have &quot;soinstall&quot; the libs and binaries for gpcl6, gxps and<br>
+ gpdl.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-10 16:46:16 -0800
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2abffa72c2ac815df38927431744232ae421d42d">2abffa72c2ac815df38927431744232ae421d42d</a>
+<blockquote>
+<p>
+ Fix CAL CFLAGS.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-10 16:03:40 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7395ad17d12b0c8b420fd7a8d139baf52d9791e0">7395ad17d12b0c8b420fd7a8d139baf52d9791e0</a>
+<blockquote>
+<p>
+ Update docs.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-10 14:24:24 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7a469b14c88409b96614e6b8abe2b645078ded3a">7a469b14c88409b96614e6b8abe2b645078ded3a</a>
+<blockquote>
+<p>
+ Bug 703555 : Seg fault in pdf14_dev_spec_op<br>
+<br>
+ So the issue is that the pdf14 clist device was not<br>
+ doing its clean-up and set to forwarding when there was an<br>
+ abort for the device sent by the interpreter.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-10 14:44: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=9699aea5cf6491106a2ad1be260d9eb2e85903c3">9699aea5cf6491106a2ad1be260d9eb2e85903c3</a>
+<blockquote>
+<p>
+ Remove .setpdfwrite<br>
+<br>
+ This has basically done nothing for years and in September 2019 I<br>
+ added a warning message that it was deprecated and would be removed.<br>
+<br>
+ Time to make good on that promise.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-03 09:25:37 -0700
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6f6c88f92f98d0f8340c29201c7536ec1a521efd">6f6c88f92f98d0f8340c29201c7536ec1a521efd</a>
+<blockquote>
+<p>
+ Sort tifftop.c dependency on jpeg headers<br>
+<br>
+ Spotted in testing the Apple M1 Mac builds<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-07 19:19:15 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=141e5067e40d25ed3aa191589d4a325941efa57a">141e5067e40d25ed3aa191589d4a325941efa57a</a>
+<blockquote>
+<p>
+ pdfwrite - don't try to linearize when the output file is not seekabkle<br>
+<br>
+ No bug report. The linearization (-dFastWebView) 'feature' of pdfwrite<br>
+ relies upon being able to seek in the output file. If we can't do that<br>
+ then we can't linearize the file.<br>
+<br>
+ If linearization is enabled, check the output file is seekable; if it<br>
+ is not then warn the user and abort linearization.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-07 15:04:36 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4ab5dd6c004a252e64f26d6238799004f70d4a35">4ab5dd6c004a252e64f26d6238799004f70d4a35</a>
+<blockquote>
+<p>
+ pdfwrite - further checks on Title for PDF/A<br>
+<br>
+ Bug #703486 &quot;PDF containing just a JPEG converted to PDF/A-1b fails rule 6.7.3-1&quot;<br>
+<br>
+ The PDF file, produced by ImageMagick 7 has a /Title in the Document<br>
+ Information dictionary which appears to be UTF-16BE encoded, but is<br>
+ lacking the BOM. It also has a 2-byte NULL appended which seems likely<br>
+ to be an error as well (PDF strings are not NULL-terminated).<br>
+<br>
+ This is valid (if not useful) as a string with PDFDocEncoding, though<br>
+ Acrobat displays an empty string in the Document Properties, but when<br>
+ converted to a text string for the output Document Information<br>
+ dictionary, and a UTF-8 string for the XMP, the two strings are not<br>
+ byte-for-byte identical, resulting in a PDF/A validation error.<br>
+<br>
+ Add some more checking for character codes which will result in UTF-8<br>
+ and PDFDocEncoding strings which do not match (anything outside the<br>
+ range 0x20 to 0x7F, or escaped).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-06 12:56:36 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7e8b585e7577044dc1d6a9a36d715be12fc2524c">7e8b585e7577044dc1d6a9a36d715be12fc2524c</a>
+<blockquote>
+<p>
+ Fix bug 703487. pageusesoverprint needs self-reference check for Parent.<br>
+<br>
+ Ken's fix for bug 698372 is needed in the procedure that I added to check<br>
+ for overprint usage.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-14 18:26:21 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=813b5f48e845d528d3070d9168aa51035a614c1c">813b5f48e845d528d3070d9168aa51035a614c1c</a>
+<blockquote>
+<p>
+ Bug 695925: Implement overprint simulation for all devices<br>
+<br>
+ This adds the capability to simulate overprint including that of<br>
+ spot colors for all devices including gray and RGB devices. This<br>
+ is achieved by having the PDF interpreter look if overprint<br>
+ is present, the seting of -dOverprint (/simulate /enable /disable),<br>
+ if the page has transparency, and if the page has spot colors. Depending upon<br>
+ the color model of the device, and if transparency is present,<br>
+ a special push of the pdf14 device may occur. The pdf14 device<br>
+ buffer collects the data in a CMYK or CMYK+spots buffer and the<br>
+ put_image method in the pdf14 device will map the buffer to<br>
+ the target device color space. The code was tested with<br>
+ devices that support and do not support spot colors, those that<br>
+ support and do not support alpha channels, tag based devices,<br>
+ gray, RGB, and CMYK devices. A special test file to check<br>
+ multiple cases was added to the regression suite. By default<br>
+ -dOverprint is set to /enable, which should result in the existing<br>
+ behavior where by RGB and Gray devices do no show overprint or spot<br>
+ colors and CMYK devices will handle CMYK overprinting and separation<br>
+ devices will show spots and overprint of all colorants. With<br>
+ -dOverprint set to /disable no device will show overprinting. With<br>
+ -dOverprint set to /simulate all devices will show overprint and<br>
+ spot colors. Ray Johnston did the work in the interpreter as<br>
+ well as the device parameter default setup. I did the pdf14 device<br>
+ changes and testing. Changes in a variety of locations were required<br>
+ due to the fact that new combinations were encountered, for example<br>
+ we had cases where devn colors were being used with a device that<br>
+ supports tags (bitrgbtags device and pdf14 compositor setup for CMYK+spots).<br>
+<br>
+ One file:<br>
+ tests_private/xps/xpsfts-a4/fts_34xx.xps.pdf ppmraw 72 now produces<br>
+ an error. This file should have been throwing an error all<br>
+ along but was being quietly swallowed. Acrobat will not open<br>
+ the created pdf file and throws and error. I will open a bug<br>
+ for the issue as it is a problem with the XPS interpreter.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-05 11:59:45 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0bd6877f480a84657696a80adc13f9c5485dd996">0bd6877f480a84657696a80adc13f9c5485dd996</a>
+<blockquote>
+<p>
+ Remove vestigial documentation<br>
+<br>
+ The NOCCFONTS feature was removed some years back and the documentation<br>
+ removed from fonts.htm, but a vestige remained in use.htm.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-04 16:34:58 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8cac642a1caf0ff821b2f1f83ee322a1cffc9a3e">8cac642a1caf0ff821b2f1f83ee322a1cffc9a3e</a>
+<blockquote>
+<p>
+ oss-fuzz 22842: sanity check the claimed number of objects in a PDF<br>
+<br>
+ This test case is a file that we identify as a broken PDF, and attempt to<br>
+ repair.<br>
+<br>
+ As part of trying to repair the xref, we an extremely large value integer which<br>
+ we take to mean the number of objects in the file, and then attempt to loop<br>
+ over them. The result is, in practice, an endless loop.<br>
+<br>
+ On the basis that the very barest PDF object:<br>
+ 1 0 obj<br>
+ endobj<br>
+<br>
+ takes 15 bytes to define, we add a check: if the number of claimed objects is<br>
+ greater than the number of bytes in the file divided by 15, then the number<br>
+ is not to be trusted, and we dicard it.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-04 13:42:51 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=180f35cecf582c0cd321e5d5cd8e11c4304ec519">180f35cecf582c0cd321e5d5cd8e11c4304ec519</a>
+<blockquote>
+<p>
+ oss-fuzz 25846: Store &quot;printable&quot; refs for errors<br>
+<br>
+ When we get an op/dict/exec stack overflow error, we take a copy of the stack<br>
+ in question, and store it in an array (or as much of it as we feasibly can).<br>
+ That allows us to clear enough stack space to allow the error handler(s) to run<br>
+ without losing the information needed to report the error.<br>
+<br>
+ With the exec stack, however, that can (and usually does) include references to<br>
+ &quot;internal&quot; objects, which are really just pointers to arbitrary C structures,<br>
+ (t_struct and t_astruct ref types). Those can contain pointers referencing<br>
+ objects of unrelated and uncertain lifespans, so persistent storage of them is<br>
+ potentially problematic.<br>
+<br>
+ So, when we create that array representation, replace every t_struct and<br>
+ t_astruct object with a printable string representation.<br>
+<br>
+ This isn't a big problem for speed because a) exec stack overflow is a rare<br>
+ error b) for exec stack overflow, we already have to traverse the objects<br>
+ checking for another condition, and c) we already do (basically) the same<br>
+ conversion considerably later, for the benefit of the error handler.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-04 09:05: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=a9a440babc49ed54d0086cd9e5faa9bdd3452e51">a9a440babc49ed54d0086cd9e5faa9bdd3452e51</a>
+<blockquote>
+<p>
+ Fix build failure<br>
+<br>
+ gsparamx.c is now required in the &quot;base&quot; configuration, since it contains<br>
+ function(s) now being called from gsdparam.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-04 08:30:31 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f9583327eeaf733cf44eb02790994308d4b9e91b">f9583327eeaf733cf44eb02790994308d4b9e91b</a>
+<blockquote>
+<p>
+ Fix Coverity ID C366347<br>
+<br>
+ Removing some code revealed a pre-existing pointless operation; we were<br>
+ setting the render mode twice.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-03 16:38:39 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6665826ff3b0ec30e3c084c5b550006a2b7c9bf5">6665826ff3b0ec30e3c084c5b550006a2b7c9bf5</a>
+<blockquote>
+<p>
+ txtwrite - fix a load of memory leaks<br>
+<br>
+ Noticed while working on some bug reports. The memory cleanup hadn't<br>
+ been updated when a bunch of members were added to the tracking data.<br>
+<br>
+ In addition the font name was allocated and recorded (and then over<br>
+ written on the next pass) for every character in the text. Oops!<br>
+<br>
+ All these are fixed here. I've run a couple of hundred random PDF<br>
+ files from our test repository with memory leak checking and found<br>
+ no leaks.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-02 19:15:44 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4021e019eaccffb809595b90d04626f337f5e237">4021e019eaccffb809595b90d04626f337f5e237</a>
+<blockquote>
+<p>
+ Bug 703452: Add type checks for error dicts<br>
+<br>
+ This is, at best, a theoretical problem now, but for extra safety, ensure the<br>
+ values we read back from systemdict for the /gserrordict and /errordict keys<br>
+ are actually dictionary objects before looking up the error key in them.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-02 19:06:12 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=32867dfea274afaf5e335ec8f2691b4cfed88b78">32867dfea274afaf5e335ec8f2691b4cfed88b78</a>
+<blockquote>
+<p>
+ Bug 703454: Handle multiple CharString definitions<br>
+<br>
+ The test file for this has a number of Type 1 fonts whose CharStrings<br>
+ dictionary definitions contain more than one entry for several glyph names.<br>
+ According to Postscript rules (which Type 1 fonts are supposed to follow),<br>
+ defining a key/value pair for which the key already exists in the dictionary<br>
+ should overwrite the earlier value - i.e. the later definition takes<br>
+ precedence.<br>
+<br>
+ It appears that the non-Postscript based implementations used in other<br>
+ PDF consumers do not honor that, and the earlier definition ends up taking<br>
+ precedence.<br>
+<br>
+ To work around various other PDF embedded Type 1 font breakages, we push an<br>
+ extra dictionary onto the dict stack which contains definitions for missing<br>
+ procedures, and various other &quot;fixups&quot;.<br>
+<br>
+ To work around this problem, we add a new definition of the Postscript &quot;def&quot;<br>
+ operator which, *only* for the CharStrings dictionary, will not allow existing<br>
+ keys to have their values replaced.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-01 10:22:03 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c23d68c1e8da7a4e4134b143f147427092b3d2f2">c23d68c1e8da7a4e4134b143f147427092b3d2f2</a>
+<blockquote>
+<p>
+ Replace -dSimulateOverprint boolean with multi-valued -dOverprint<br>
+<br>
+ Internally the name is changed to &quot;overprint_control&quot; which has enum values<br>
+ of gs_overprint_control_t. This is in preparation for Michael Vrhel's<br>
+ overprint simulation implementation.<br>
+<br>
+ Documentation of the change and the new parameter specifics added to the<br>
+ doc/Use.htm file. Also added change to gs_init.ps so that command line use<br>
+ of -dSimulateOverprint=true maps to -dOverprint=/enable and similarly,<br>
+ -dSimulateOverprint=false maps to -dOverprint=/disable with a warning.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-01 09:44:14 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=322d21b4c04d2f64583630de4b190ce8d3b0721d">322d21b4c04d2f64583630de4b190ce8d3b0721d</a>
+<blockquote>
+<p>
+ Fix building mkromfs in a memento build<br>
+<br>
+ Adding malloc_.h to gp_ntfs.c means it gets the memento redefinitions of<br>
+ malloc/free. That causes missing symbols errors when gp_ntfs.c is used in the<br>
+ mkromfs build. So (as we do for other such cases) add those missing symbols<br>
+ to mkromfs.c.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-01 16:21:24 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=41130dd35b2dc43b07600b51d7c9fab466e8bf6c">41130dd35b2dc43b07600b51d7c9fab466e8bf6c</a>
+<blockquote>
+<p>
+ PDF interpreter - work around broken ObjStms (again)<br>
+<br>
+ Bug #703448 &quot; Ghostscript can't read files that poppler, mupdf and Firefox and others can read&quot;<br>
+<br>
+ The problem is in an OObjStm, a compressed representation of various<br>
+ PDF objects. In the example file the ObjStm returns a lone 'mark'<br>
+ object for one of the compressed objects, which is not legal.<br>
+<br>
+ This appears to be the font T1_2 on page 87.<br>
+<br>
+ The mark confuses our counting of the returned objects and that leads<br>
+ to the interpreter falling in a heap.<br>
+<br>
+ There's no trivial way to address this, so I've chosen to use the<br>
+ approach used for error handling in other places; push a specific name<br>
+ onto the stack, and then use that instead of a mark to delimit the<br>
+ portion of the stack of interest.<br>
+<br>
+ Obviously nothing is going to rescue the broken font; but since this is<br>
+ a PDF file which has been OCR'ed I don't think this is a problem as we<br>
+ will not to try to use it for rendering as the text is all 'drawn' in<br>
+ text rendering mode 3 (neither fill nor stroke).<br>
+<br>
+ Because we keep using this I've also added a couple of utility procedures<br>
+ CountToKey and ClearToKey, which work similarly to countomark and<br>
+ cleartomark. Because I wanted to be able to detect a missing key on the<br>
+ stack CountToKey returns a boolean, not just a number.<br>
+<br>
+ I've also used that approach around the verify_page_tree call so that<br>
+ we don't end up with a pile of junk on the stack if it should fall<br>
+ over similar errors in future.<br>
+<br>
+ Finally I tested with the customer supplied file which originally<br>
+ inspired the changes in resolveobjectstream to detect the last kind of<br>
+ broken ObjStm and that file continues to work.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-01 14:47:07 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a6c2b025f820dd06cb94014ed5f040ddb203f97d">a6c2b025f820dd06cb94014ed5f040ddb203f97d</a>
+<blockquote>
+<p>
+ Update tesseract build for latest versions.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-02-01 13:14:24 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ce2fcde6d32586ef468fd56121ffd7d66d03b613">ce2fcde6d32586ef468fd56121ffd7d66d03b613</a>
+<blockquote>
+<p>
+ Fix leptonica compilation due to removed file.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-06 11:23: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=dfed81f5a657a67f672777389bff70d6d31253f7">dfed81f5a657a67f672777389bff70d6d31253f7</a>
+<blockquote>
+<p>
+ A customer (#584) file exposed a problem with Link handling<br>
+<br>
+ Thanks to Ken Sharp for this fix. He discovered that if annotsetcolor<br>
+ returns false, the annotation did not return false.<br>
+<br>
+ This occurred with the test file received from that customer on 9/1/2020<br>
+<br>
+ Note delayed commit due to proximity to release.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-30 15:45:34 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5bbb4c7e686ddfb28b27e0a790dabef6338ffa6d">5bbb4c7e686ddfb28b27e0a790dabef6338ffa6d</a>
+<blockquote>
+<p>
+ txtwrite - fully initialise a structure<br>
+<br>
+ Bug #702960 &quot;Valgrind error in clamp_poin_aux on txtwrite device&quot;<br>
+<br>
+ Initialise all members of the structure to 0.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-30 11:00:08 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d787dad3cd310788ea7201eb2fe1fff9a0a263c2">d787dad3cd310788ea7201eb2fe1fff9a0a263c2</a>
+<blockquote>
+<p>
+ txtwrite - Address some memory handling problems<br>
+<br>
+ Bug #703143 &quot;segfault in ps2txt with certain large file&quot;<br>
+<br>
+ There are two problems here; firstly the textw_text_release()<br>
+ function is called *from* gs_text_release, and should not be calling<br>
+ that function. This was the initial cause of the seg fault.<br>
+<br>
+ Secondly the txtwrite custom text enumerator was not declaring the<br>
+ 'pte_fallback' text enumerator member, which meant that it could be<br>
+ relocated without updating the txtwrite text enumerator, leading to<br>
+ seg faults further through the processing.<br>
+<br>
+ This resolves the seg faults on the supplied test file for me, but there<br>
+ are still memory problems (memory leaks in fact) revealed by running<br>
+ under Memento. I'll address these in a later commit or commits.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-28 04:09:20 -0800
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e21027b895f3ba6abda70cefb8facbc772bd7ea9">e21027b895f3ba6abda70cefb8facbc772bd7ea9</a>
+<blockquote>
+<p>
+ Better fix for psdcmyk indeterminisms.<br>
+<br>
+ When calculating buffer sizes, we now take the presence/absence of<br>
+ tags into account. This must be copied into the temporary device<br>
+ structure from the target.<br>
+<br>
+ Simply setting it to 0 will stop the indeterminisms, but will give<br>
+ problems with potential future devices (psdcmyktags?).<br>
+<br>
+ Accordingly, I've removed the memset, and copied the value, meaning<br>
+ we can rely on valgrind to help spot such problems in future.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-28 09:31:29 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a448691e97cc4b4b7040e8c7d7a39e13eedfc0c2">a448691e97cc4b4b7040e8c7d7a39e13eedfc0c2</a>
+<blockquote>
+<p>
+ oss-fuzz 27399: Handle NaN and Inf in object type conversions<br>
+<br>
+ In the core of cvs detect unrepresentable floating point numbers and throw<br>
+ an error (note: not using fpclassify or similar because they are C99 additions).<br>
+<br>
+ If we hit such a case, throw an error, in this case undefinedresult - we<br>
+ cannot use rangecheck because that gets special handling which also triggers<br>
+ the uninitialized value error.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-27 12:53:35 -0800
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=66a8ec27ede82a353cb2775c4be1904aca529b2a">66a8ec27ede82a353cb2775c4be1904aca529b2a</a>
+<blockquote>
+<p>
+ Init mdev struct to 0 on stack -- fix psdcmyk non-determinism<br>
+<br>
+ Big giant structure full of random stuff is probably not a good idea....<br>
+<br>
+ This hopefully fixes non-determinisms seen in pdfi psdcmyk device.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-27 13:14:10 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2679ddae53883ba3c7129846494d921151527a74">2679ddae53883ba3c7129846494d921151527a74</a>
+<blockquote>
+<p>
+ More jpeg passthrough error case fixes.<br>
+<br>
+ Ensure that on an error return, we communicate the end of JPEG passthrough to<br>
+ the (potential) recipient(s) of the data.<br>
+<br>
+ Basically, we need to ensure that JPEG passthrough is completed before the<br>
+ last time we return from s_DCTD_process for the current stream - i.e. whether<br>
+ it is an EOD condition, or an error condition.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-27 09:51: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=5d59986af2b7df560b85ccf54a491eb632022439">5d59986af2b7df560b85ccf54a491eb632022439</a>
+<blockquote>
+<p>
+ Close down JPEG passthrough when finalizing DCT decoding.<br>
+<br>
+ This doesn't seem too cause any problems with Ghostscript, but it<br>
+ is implicated in seg faults in pdfi. Probably because the pdfwrite<br>
+ streams are in a faulty state.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-10 10:17:35 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3eb6b9866aa1dae4c2778b450cc99b29e9d11d7e">3eb6b9866aa1dae4c2778b450cc99b29e9d11d7e</a>
+<blockquote>
+<p>
+ Implement Nup subclass device to support nesting images on a page.<br>
+<br>
+ By using a subclassing device to intercept a few of the device procs<br>
+ (get_initial_matrix, output_page, fillpage, put_params, close_device, and<br>
+ dev_spec_op) pages can be placed on to a page that is eventually output.<br>
+<br>
+ This initial implementation scales the pages on the 'nest' as defined<br>
+ by -sNupControl parameter that is a string of the form &quot;HxV&quot; where H<br>
+ and V are integers controlling nesting across (H) and down (V) the page.<br>
+<br>
+ All pages on the nest are the same size/orientation as the first page of<br>
+ the nest, and if a different PageSize is encountered, any pages on the<br>
+ current nest will be output before starting a new nest.<br>
+<br>
+ In gx_device_set_hwsize_from_media dev_spec_op is used to prevent changing<br>
+ the device width and height (HWSize) for PageSize or .MediaSize params.<br>
+<br>
+ This requires that the graphics library should not assume that HWSize is<br>
+ derived from PageSize and HWResolution, but it allows the intial clip_path<br>
+ for the nested pages to be set from the MediaSize, Margins, and HWMargins<br>
+ in gx_default_clip_box.<br>
+<br>
+ There are a few files that have differences with the 'psdcmyk' devices when<br>
+ tested with -sNupControl=1x1:<br>
+ Bug688584.ps: Page 6 missing graphics,related to SeparationOrder usage.<br>
+ (a bug will be opened for this once this is committed).<br>
+ Bug692517.ps: subclass device barely switches to clist mode for 72.0<br>
+ (don't care, page mode still works for larger MaxBitmap),<br>
+<br>
+ tests_private/pdf/PDFIA1.7_SUBSET/CATX2975.pdf.ppmraw.300.0..gs<br>
+ (seems to be a progression on page 9)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-25 19:04:55 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7f52ae74a19bf1076ebfb9ed1695b0077fc70ee7">7f52ae74a19bf1076ebfb9ed1695b0077fc70ee7</a>
+<blockquote>
+<p>
+ Bug 703320: Export cmsCloneTransformChangingFormats<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-25 16:33:26 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=181672f2faccccfd613837d0e60610301a1816ea">181672f2faccccfd613837d0e60610301a1816ea</a>
+<blockquote>
+<p>
+ Bug 703378: Error handling for memory failures in gstate<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-25 11:24:46 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=14c51e628fc78f43aa9360ad94c359085583bec5">14c51e628fc78f43aa9360ad94c359085583bec5</a>
+<blockquote>
+<p>
+ Coverity 365590 Parameter set but not used.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-23 12:03:29 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=730d1c410e38500f98ae11cad42d8672521588b4">730d1c410e38500f98ae11cad42d8672521588b4</a>
+<blockquote>
+<p>
+ Initialize the current_glyph entry in pdfwrite text enumerator<br>
+<br>
+ Also address a compiler warning about &quot;operation&quot; might be unintialised at<br>
+ line 3682.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-23 09:36:09 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=054d35268592bba2434dffdb3b36e4ad224adcf0">054d35268592bba2434dffdb3b36e4ad224adcf0</a>
+<blockquote>
+<p>
+ Guard against indirect /Length in an XRef stream<br>
+<br>
+ Bug #703372 &quot;Unable to find Trailer&quot;<br>
+<br>
+ The file has an XRef stream (a compressed cross-reference), where the<br>
+ /Length of the stream is itself an indirect object. We can't dereference<br>
+ the Length, because to do so we would need to look up its object number<br>
+ in the cross-reference!<br>
+<br>
+ Oddly the PDF specification does not state that the /Length must be a<br>
+ direct object.<br>
+<br>
+ This commit wraps the code which retrieves the /Length in a stopped and<br>
+ if it fails we fall back to the assumption that the length is invalid<br>
+ and apply our normal recovery strategy.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-21 09:52:31 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=98669b8da7d1dd925a1e3bc0bc785cffcb12acab">98669b8da7d1dd925a1e3bc0bc785cffcb12acab</a>
+<blockquote>
+<p>
+ Fix PDF 'colorspacespotcolors' to handle uncolored Patterns.<br>
+<br>
+ Michael Vrhel noticed that the PageSpotColor count was wrong for test<br>
+ file Bug694385.pdf, finding the &quot;Dieline&quot; Separation, but missing the<br>
+ &quot;PANTONE 378 C&quot; Separation that was the underlying colorspace for an<br>
+ uncolored Pattern.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-16 22:37:13 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d020a4e75e351d1de387d13edebffc36ab54c6d5">d020a4e75e351d1de387d13edebffc36ab54c6d5</a>
+<blockquote>
+<p>
+ Fixes/changes to default subclass device procedures.<br>
+<br>
+ The 'output_page' should pull the PageCount from the child device (that<br>
+ is the only real fix.)<br>
+<br>
+ The other changes are to get rid of all of the return statements that<br>
+ cannot be reached. The 'else' is retained as a comment /* else */ in<br>
+ case someone can't figure that out. It is sort of surprisng that we<br>
+ don't get 'statement cannot be reached' messages out of any compiler or<br>
+ static analysis tool.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-20 20:54:10 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cc676010ad929da40db4c89810ede2f5c4a0ed7b">cc676010ad929da40db4c89810ede2f5c4a0ed7b</a>
+<blockquote>
+<p>
+ Implement strip_tile_rect_devn for pdf14 device<br>
+<br>
+ The default strip_tile_rect_devn method returns an error<br>
+ and has a comment that the method is only implemented<br>
+ for devices that support devn, which the comment says<br>
+ are only the memory planar devices. However, the pdf14 device<br>
+ also supports devn colors and has to be able to handle<br>
+ pattern tiles that have spot colors. When such files<br>
+ are encountered, the interpreter will just report an error in<br>
+ the file and continue on its way if we are in non-clist mode.<br>
+ When in clist mode, the error will cause ghostscript to stop<br>
+ execution.<br>
+<br>
+ This implementation borrows heavily from gx_default_strip_tile_rectangle<br>
+ to deal with all the logic of where we are on the tile,<br>
+ it then borrows heavily from pdf14_copy_mono but<br>
+ using devn colors and dealing with the case of<br>
+ one of the colors possibly being gx_no_color_index.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-21 13:00:22 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=47ec79f910892810d0d72116667d9487093d5c34">47ec79f910892810d0d72116667d9487093d5c34</a>
+<blockquote>
+<p>
+ Add malloc_.h to gp_ntfs.c<br>
+<br>
+ Bug #703310 &quot;gp_ntfs.c uses malloc but does not include &quot;malloc_.h&quot;&quot;<br>
+<br>
+ There doesn't seem to be a problem with adding malloc_.h to the C file<br>
+ it matches what we do with other files, doesn't produce any warnings<br>
+ and passes regression testing.<br>
+<br>
+ Using WIN32_LEAN_AND_MEAN however causes the compiler to fail with a<br>
+ number of errors, so we won't be adding that. The nature of the errors<br>
+ look like these would be difficult to solve and the benefit of this<br>
+ preprocessor directive is moot, even Microsoft insiders describe it<br>
+ as 'largely useless'.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-19 11:15:28 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5c540233af993678154914eede088a42039ae745">5c540233af993678154914eede088a42039ae745</a>
+<blockquote>
+<p>
+ libtiff build fail in old VS versions<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-17 20:01:08 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=be18309f3ce815c21ce858527515e7765d672a9b">be18309f3ce815c21ce858527515e7765d672a9b</a>
+<blockquote>
+<p>
+ Fix issues with windows C# demos/csharp/api/ghostnet.cs<br>
+<br>
+ Make sure to explicitly tell C# that the callback delegates will use a Cdecl<br>
+ calling convention, which means that the caller (in this case the ghostscript)<br>
+ will clean the stack. Also some minor changes to the project settings.<br>
+ The default for debug is to use gpdldllxx.dll while the release versions will<br>
+ use gsddllxx.dll just to help with the testing. Finally, make sure to *always*<br>
+ copy the dll from the appropriate gs directory, even when the C# application<br>
+ did not need to do a build (as it was already built)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-15 15:13:05 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b9ad2c23e6fd1f7cf0c4889504ac1642f077b660">b9ad2c23e6fd1f7cf0c4889504ac1642f077b660</a>
+<blockquote>
+<p>
+ Tifflib fix: Thunder RLE can fail to decode last run.<br>
+<br>
+ GPDL decode of tests_private/tiff/text.tif gives valgrind errors<br>
+ due to the &quot;thunder decode&quot; failing to extract the last run of<br>
+ bytes.<br>
+<br>
+ The logic in the decoder, presumably intended to spot overruns of<br>
+ data is incorrect, in that runs that end at the end of a row<br>
+ (npixels == maxpixels) will not be decoded.<br>
+<br>
+ Fix this by limiting 'n', the number of pixels to copy. Note that<br>
+ npixels is updated by the 'unlimited' value to ensure the error<br>
+ reporting at the end of the loop still works.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-15 12:26:22 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4e956a2ee5137812007a7862a6eb8fddd9b709d2">4e956a2ee5137812007a7862a6eb8fddd9b709d2</a>
+<blockquote>
+<p>
+ Update libtiff to 4.2.0<br>
+<br>
+ And then re-apply: ef66198ade77d5d551b3045cd36bed81c0b04f54<br>
+<br>
+ Changes to libtiff for gpdl.<br>
+<br>
+ 1) Ensure that libtiff doesn't mess with 'boolean' in GS builds<br>
+ on Windows. Without this, the jpeg structures used by our JPEG<br>
+ lib build are different in size when called from gs and libtiff,<br>
+ resulting in runtime errors.<br>
+<br>
+ 2) Update libtiff so that it can correctly call into the jpeg<br>
+ library so that memory operations happen from our pools, not<br>
+ malloc/free. Slightly horrid in that this is more complex with<br>
+ OJPEG than JPEG files.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-01 19:05:40 -0500
+</strong>
+<br>Rob Boehne &lt;robb@datalogics.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=35035761ffe178284c4ef9fc2ef75a4843e64a63">35035761ffe178284c4ef9fc2ef75a4843e64a63</a>
+<blockquote>
+<p>
+ Bug 703339: Fix libtiff name clash on AIX<br>
+<br>
+ Patch grabbed from upstream:<br>
+<br>
+ https://gitlab.com/libtiff/libtiff/-/commit/31ca59cb047353d7edf66d04fe052861b180e42d<br>
+<br>
+ Rename itrunc to fix name clash with a different itrunc in math.h on AIX.<br>
+<br>
+ Fixes issue #189<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-15 12:10:58 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=364a3883326b90bf078d488909ba3203450da3d3">364a3883326b90bf078d488909ba3203450da3d3</a>
+<blockquote>
+<p>
+ Bug 703301: Fix logic error in display device structure checks.<br>
+<br>
+ Thanks to Pino Toscano for spotting this.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-14 19:45:33 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f9723a92bcb3ab1de8f5cf16da5b5e6c807eeda2">f9723a92bcb3ab1de8f5cf16da5b5e6c807eeda2</a>
+<blockquote>
+<p>
+ Bug 703336: Fix GPL crash with jpg input on 64bit windows.<br>
+<br>
+ The Jpeg code uses setjmp/longjmp for error handling. On Windows at<br>
+ least, in 64bit builds, jmpbufs need to be 16 byte aligned. This is<br>
+ generally achieved by malloc blocks being 16 byte aligned, and<br>
+ structures have their offsets calculated so that their contents lie<br>
+ at appropriate positions.<br>
+<br>
+ Unfortunately, our malloc routines only align to 8 byte aligned.<br>
+<br>
+ We therefore bend the jpgtop.c code to align the jmpbuf manually.<br>
+<br>
+ Similar tricks are required in the pngtop.c code, which also uses<br>
+ setjmp/longjmp, but a slightly different approach has to be taken<br>
+ as the png routine allocates the structure with the callback in<br>
+ itself, so we don't get to align just that. Instead, we modify the<br>
+ allocation routines that we provide to pnglib so that blocks are<br>
+ correctly padded.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-14 16:42:03 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=496d1d927acfe2460b69552f372f9ec7a411a172">496d1d927acfe2460b69552f372f9ec7a411a172</a>
+<blockquote>
+<p>
+ Improve memory device bitmap size calculation in tagged planar cases.<br>
+<br>
+ The planar calculations for memory device sizes were failing to take<br>
+ the presence of tags into account. Fix those calculations here.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-14 13:31:15 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6376e75907ab7eff2248236333a10489cfad3787">6376e75907ab7eff2248236333a10489cfad3787</a>
+<blockquote>
+<p>
+ Remove paths stored in --permit-file* when sanitising.<br>
+<br>
+ Bug #703338 &quot;Hide permitted paths from invocation comment&quot;<br>
+<br>
+ As noted in the bug report, the --permit-file* control arguments are<br>
+ not replaced with '?' when sanitising the arguments. This leads to an<br>
+ information leak with the 'Invocation' comment emitted by pdfwrite.<br>
+<br>
+ This commit adds checking for the -- switches and sanitises the<br>
+ permit-file* cases.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-13 13:03:22 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f11882a4b09beb0d74f88df759841cb49ed63683">f11882a4b09beb0d74f88df759841cb49ed63683</a>
+<blockquote>
+<p>
+ MSVC: Yet another nmake version.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-12 22:11:13 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=79decaf7eca50a7dc6201dc86ef487ee1e7563f9">79decaf7eca50a7dc6201dc86ef487ee1e7563f9</a>
+<blockquote>
+<p>
+ Fix GhostPDL TIFF reader to be able to handle tiff32nc output.<br>
+<br>
+ The PHOTOMETRIC_SEPARATED case would only handle num_comps == 3, but the<br>
+ tiff32c device creates 4 component images with PHOTOMETRIC_SEPARATED.<br>
+ Allowing 3 or 4 components works.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-07 17:24:44 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=904c546962cb749fa8136130612e1c0a9cf558af">904c546962cb749fa8136130612e1c0a9cf558af</a>
+<blockquote>
+<p>
+ Add CMYK equivalent colorants for Separation Spot colors to tiffsep device.<br>
+<br>
+ This may be useful information -- adding the equivalent colors for the Spot<br>
+ color names.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-07 17:32:12 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=34ec1a4deb5275280184346ef877e6984da59da8">34ec1a4deb5275280184346ef877e6984da59da8</a>
+<blockquote>
+<p>
+ Fix pdf_info.ps &quot;write-doc-string&quot; to handle names as well as strings.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-09 10:32: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=ead8676f2b8686605b8f6976da4de677d99d39e0">ead8676f2b8686605b8f6976da4de677d99d39e0</a>
+<blockquote>
+<p>
+ Fix yet another version number handling ommission<br>
+<br>
+ From the introduction of the patch level to the version number.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-06 16:23:05 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a081833ac163dd6d6b404b679cf086f125847ef8">a081833ac163dd6d6b404b679cf086f125847ef8</a>
+<blockquote>
+<p>
+ oss-fuzz 26175: propagate error for invalid arc4 key<br>
+<br>
+ Also, precautionary initialisation of a couple of variables in the arc4 stream<br>
+ state.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-04 10:38:29 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b0b1b89c767809c05abbe118c47875743438580c">b0b1b89c767809c05abbe118c47875743438580c</a>
+<blockquote>
+<p>
+ oss-fuzz 27985: Initialize the glyph lengths array<br>
+<br>
+ Just memset to 0x00, so in the event of an error, we don't later use the memory<br>
+ uninitialized.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-06 16:22:15 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=62a98980772fde394c99e92bfc9c18d5407c06e1">62a98980772fde394c99e92bfc9c18d5407c06e1</a>
+<blockquote>
+<p>
+ Update for another version of MSVC.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-05 11:25:03 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b01bdd87eb96b3d8db7ef2727d5a6ab7b122b8fc">b01bdd87eb96b3d8db7ef2727d5a6ab7b122b8fc</a>
+<blockquote>
+<p>
+ Update openjpeg to 2.4.0<br>
+<br>
+ Fixes:bugs 703275, 703276, 703277, 703278, 703279, 703280, 703281.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-05 09:01:59 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cc2f67265d1508a6cf953470ef7b2a0d9a1a14e3">cc2f67265d1508a6cf953470ef7b2a0d9a1a14e3</a>
+<blockquote>
+<p>
+ Update freetype to 2.10.4 (for real, this time!)<br>
+<br>
+ (with zlib &quot;Diagnostic functions&quot; hack/fix in freetype/src/zutil.h)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2021-01-01 17:50:54 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6b4c229d4bf4bcccf8000611caaef59f859d04a6">6b4c229d4bf4bcccf8000611caaef59f859d04a6</a>
+<blockquote>
+<p>
+ Build apitest demo with -DCLUSTER.<br>
+<br>
+ This ensures that pdfwrite doesn't put timestamps in the<br>
+ produced PDF files, which means the md5sums are consistent.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-16 15:50:09 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=01194f9c8a0f2df53ad8f1815bfadc10ad247ba7">01194f9c8a0f2df53ad8f1815bfadc10ad247ba7</a>
+<blockquote>
+<p>
+ PDF interpreter - check type of Group entries in Form XObjects<br>
+<br>
+ Bug #703271 &quot;Using oitsample to convert some pdf files to tif errors out with &quot;The export process timed out.&quot;&quot;<br>
+<br>
+ This is for the larger (205 pages) of the two files. The file is badly<br>
+ broken, 3 fonts point to objects which are not dictionaries but are<br>
+ simply integers. In addition at least one of the Form XObjects has a<br>
+ Group entry which also points to an object which is an integer, not a<br>
+ dictionary.<br>
+<br>
+ The Group was corrupting the operand stack leading to later errors. This<br>
+ commit checks the type of the Group (and the BBox since we're making<br>
+ changes anyway) and simply aborts the Group if the type is incorrect.<br>
+<br>
+ Obviously this is going to lead to incorrect output, but at least we<br>
+ can carry on to later pages.<br>
+<br>
+ Note that Acrobat throws errors on pages 168, 169 and 171-175 of this<br>
+ file and renders blank pages for them, so the file is clearly very badly<br>
+ broken.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-16 09:56:40 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=eef97dac4d6d6e88319c17af4f739e7d899776f3">eef97dac4d6d6e88319c17af4f739e7d899776f3</a>
+<blockquote>
+<p>
+ base/memento.h: fix Memento_listBlockInfo macro - needs to take one argument.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-15 17:42:35 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9912c583aba35b68e251a73861ead44b0dbd91b4">9912c583aba35b68e251a73861ead44b0dbd91b4</a>
+<blockquote>
+<p>
+ Add Memento_blockInfo(void *addr).<br>
+<br>
+ Show the history for a block.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-15 16:46:56 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e1dfb92cc593cd27ed593ffcc3a79711b7504563">e1dfb92cc593cd27ed593ffcc3a79711b7504563</a>
+<blockquote>
+<p>
+ PDF interpreter - handle indirect objects in Encrypt dictionary<br>
+<br>
+ Bug #703272 &quot;This PDF files converts to tiff using the oitsample program, but the font turns from English to what looks like chinese&quot;<br>
+<br>
+ The Encrypt dictionary and the subsidiary StdCF dictionary are stored<br>
+ as indirect objects (presumably in order to make the file larger). The<br>
+ decryption code wasn't expecting that.<br>
+<br>
+ Add code to dereference the objects. While we're here, add code to check<br>
+ the types of the objects and ensure they are correct, and throw an<br>
+ error if they are not.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-11 11:19:22 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4d91c6ad3e76e19f36d23a50dce253fbbc7d0560">4d91c6ad3e76e19f36d23a50dce253fbbc7d0560</a>
+<blockquote>
+<p>
+ Update CFF strings &quot;known&quot; encoding in C<br>
+<br>
+ There were a few missing strings.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-11 10:55:29 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=87eed438b0cffba111371c25e1d169163f310465">87eed438b0cffba111371c25e1d169163f310465</a>
+<blockquote>
+<p>
+ Reintroduce and update cff std strings &quot;encoding&quot; PS file<br>
+<br>
+ and move it to &quot;lib&quot; since we don't actually use it in Postscript any more.<br>
+<br>
+ It's only used if we ever need to regenerate the C representation of &quot;known<br>
+ encodings&quot;.<br>
+<br>
+ Also, update to include missing strings.<br>
+<br>
+ Finally, fix the tool that relies on this &quot;encoding&quot; - .namestring is no<br>
+ longer exposed as a Postscript operator, so define a local equivalent. And<br>
+ update the example invocation in the comments<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-14 20:15: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=bcd9f9d0126d07dc6f93e47618baa6d23fcaf1c2">bcd9f9d0126d07dc6f93e47618baa6d23fcaf1c2</a>
+<blockquote>
+<p>
+ Mask off the transparency bits from the rop value<br>
+<br>
+ before we use it as an index into a 256 entry rop table.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-15 09:10:55 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0fa1513841981e7d3bc4da11c93edeeedd452b72">0fa1513841981e7d3bc4da11c93edeeedd452b72</a>
+<blockquote>
+<p>
+ Fax Decode filter - add a simple sanity check<br>
+<br>
+ I have a test file (source unknown) e249869cf6a250726711c21fda42763c_signal_sigsegv_a418b9_5694_4827.pdf<br>
+ which has a number of type 3 bitmap glyphs with invalid CCITTFaxDecode<br>
+ parameters. The (optional) Columns key in the dictionary has an<br>
+ associated value of 2^32-1 in one case and an even larger value in<br>
+ another.<br>
+<br>
+ The new pdfi interpreter causes a seg fault in the CCITTFaxDecoder<br>
+ because this breaks a 32-bit signed integer on Windows, causing the<br>
+ 'raster' value to be negative, when added to the memory pointer this<br>
+ causes us to try and read from before the beginning of the data buffer.<br>
+<br>
+ Ghostscript's PDF interpreter doesn't trigger this because it fails<br>
+ much earlier and doesn't try to execute these glyphs but I'm certain<br>
+ it would be possible to modify the file so that it did.<br>
+<br>
+ Adding a simple negative check and throwing an error if it is, resolves<br>
+ the problem.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-11 11:45:34 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d8dd6797ba52cd8af28839d1f5f2a4a5fca055d7">d8dd6797ba52cd8af28839d1f5f2a4a5fca055d7</a>
+<blockquote>
+<p>
+ Fix -dAntidropuoutDownscaler for non-masked images.<br>
+<br>
+ The masked image case set the polarity needed in order for the<br>
+ ISpecialDownScale image interpolation to work, but the ordinary images<br>
+ did not set the 'pol' leaving it set to GX_CINFO_POLARITY_UNKNOWN.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-14 08:39:50 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c6166768c6e963b0fe28ccdb266629443e521381">c6166768c6e963b0fe28ccdb266629443e521381</a>
+<blockquote>
+<p>
+ Fix bug 703270: Wrong path for PostScript helper file in ps2epsi<br>
+<br>
+ In the change mentioned in the bug, rather than rely on the LIBPATH<br>
+ search method, the ps2epsi script assumed that pd2epsi.ps would be<br>
+ in the same directory as the 'gs' executable, which is not correct.<br>
+<br>
+ Change to use bare 'ps2epsi.ps' so that it will be found on the<br>
+ LIBPATH as instialled by: make install<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-12 10:31:50 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3f16ba6aa7c12ee469736f3c8e2205be81087f2a">3f16ba6aa7c12ee469736f3c8e2205be81087f2a</a>
+<blockquote>
+<p>
+ PDF interpreter - improve commit for bug #703217<br>
+<br>
+ In the event that the execution of a Form XObject for a transparency<br>
+ Group consumed more operands than were pushed, we left the number<br>
+ of operands on the stack. This just cleans up the stack.<br>
+<br>
+ The file for bug #697655, with the pdfwrite device, is the only known<br>
+ case of this, and the file fails with pdfwrite anyway, so this is not a<br>
+ truly vital fix, but its best to tidy up.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-12 09:29:36 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=96e881edc16d7ffe562f8e46354a16275008fe08">96e881edc16d7ffe562f8e46354a16275008fe08</a>
+<blockquote>
+<p>
+ Have Git ignore some more directories<br>
+<br>
+ Add debugobjrt, memobj64 and windows./vs to the ignore list for Git.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-10 11:01:55 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d1be0cd16079c34c05b790683ea76b790486989b">d1be0cd16079c34c05b790683ea76b790486989b</a>
+<blockquote>
+<p>
+ pdfwrite - fix another memory leak on an error path<br>
+<br>
+ Again this does not exhibit with the garbage-collecting memory allocator,<br>
+ discovered by Nancy while working on pdfi.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-08 11:27:10 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=733a8f209ecce61f31621ab87d1d1a81f4935602">733a8f209ecce61f31621ab87d1d1a81f4935602</a>
+<blockquote>
+<p>
+ Bug 70716: ETS code clean up.<br>
+<br>
+ Add checking for memory allocation failures, static code analysis findings,<br>
+ and issue mentioned in 701716. Also update windows project to VS2019.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-08 15:35:28 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a1b4377ffe877fcd3ec2832ca670833cc45adb7a">a1b4377ffe877fcd3ec2832ca670833cc45adb7a</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak on error path<br>
+<br>
+ When writing outlines via a pdfmark, if the code failed for any reason<br>
+ then we would leak various objects. As usual this is cleaned up for us<br>
+ by the garbage collector when running in PostScript but leaks when we<br>
+ aren't using the garbage collector.<br>
+<br>
+ There are likely to be many, many more paths that leak like this, the<br>
+ only way to find them is going to be a complete audit of the pdfwrite<br>
+ source, which would be a major undertaking. For now we'll fix them as<br>
+ we find them.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-08 09:35:26 +0000
+</strong>
+<br>Peter Cherepanov &lt;sphinx.pinastri@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7a5ed5d0f3fd955bc5d0b1dbb18e63636f697a76">7a5ed5d0f3fd955bc5d0b1dbb18e63636f697a76</a>
+<blockquote>
+<p>
+ PDF Interpreter - Clean up stack after Form Xobject for transparency Group<br>
+<br>
+ Bug #703217 &quot;Error: /typecheck in /--pdfshowpage_finish--&quot;<br>
+<br>
+ This is basically the patch supplied by Peter Cherepanov, which uses<br>
+ the existing mechanism for restoring the stack to a count stored<br>
+ before the execution of the Form XObject.<br>
+<br>
+ However, Peter's patch caused a regression with the file for bug 697655<br>
+ when run with pdfwrite, because that file consumes more operands from the<br>
+ stack than it should, leading to us trying to pop -1 elements.<br>
+<br>
+ This commit only pops a positive number of objects, and has a slightly<br>
+ different error text.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-07 09:25:05 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fb78a833aeb27ddd59a88c799fde1e939fb43e5a">fb78a833aeb27ddd59a88c799fde1e939fb43e5a</a>
+<blockquote>
+<p>
+ Fix bug 702786: Ignore null node in Page tree<br>
+<br>
+ Thanks to Peter Cherepanov for this analysis and the patch,<br>
+<br>
+ The sample file has an element in the /Pages array that cannot be resolved,<br>
+ and following the PDF spec is interpreted as null.<br>
+<br>
+ This patch makes Ghostscript ignore null nodes in the page tree. In turn,<br>
+ this causes a missing page error, which was considered a fatal error before.<br>
+<br>
+ -dPDFSTOPONERROR causes Ghostscript to not proceed with this broken file.<br>
+<br>
+ Regression testing shows no differences with other files.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-07 16:43:37 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f4ef8bb9684bcc7d07c83b8ffabb607046930a7d">f4ef8bb9684bcc7d07c83b8ffabb607046930a7d</a>
+<blockquote>
+<p>
+ pdfwrite - Limit XUID to 16 values and don't emit it for subset fonts<br>
+<br>
+ Bug 703225 &quot;The document breaks after repeated processing&quot;<br>
+<br>
+ As noted by Peter Cherepanov, we currently preserve the XUID in the font<br>
+ when writing it out from pdfwrite, and the PDF interpreter extends any<br>
+ existing XUID (or adds a new one) every time we process the file.<br>
+<br>
+ The PLRM documents an Adobe limitation of 16 entries in an XUID array<br>
+ and it appears Acrobat has the same limitation.<br>
+<br>
+ This commit adds new flags to the type 1 and type 2 font writers so that<br>
+ we only write an XUID when we are *not* subsetting the font (as the use<br>
+ of an XUID on two different subset fonts would be incorrect). It also<br>
+ only emits the first 16 values from an XUID even if we aren't subsetting<br>
+ the font.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-07 09:59:35 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7bfb672daea29645ee40c0facbd5f2eec7cf58e7">7bfb672daea29645ee40c0facbd5f2eec7cf58e7</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak when converting names into references<br>
+<br>
+ When writing certain kinds of metadata from pdfmarks we need to convert<br>
+ a named object into an indirect reference. The code for doing this<br>
+ assumed that the gs_param_string array was arranged so that each<br>
+ gs_param_string's data member pointed to an individually allocated<br>
+ chunk of memory, so it was safe to replace it.<br>
+<br>
+ This had 2 problems; firstly the original data buffer was not freed,<br>
+ leading to memory leaks. Secondly, and more seriously, not all<br>
+ gs_param_string_arrays are organised this way. Sometimes the array<br>
+ has a single data pointer containing all the entries sequentially,<br>
+ each member of the array is a gs_param_string where the data member<br>
+ points into a location in the string. We cannot free and reallocate<br>
+ the data members from that kind of string array.<br>
+<br>
+ SO this commit modifies the code to make a new copy of the data in the<br>
+ param_string_array in the format expected by the remaining code, and<br>
+ frees the copied data afterwards. This fixes the meory leak and avoids<br>
+ the potential crashes caused by the incorrect assumption.<br>
+<br>
+ Note that the assumption in the code is true when the input is from the<br>
+ PostScript interpreter, but is not true for the input from pdfi and<br>
+ obviously potentially any other front-end.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-04 15:07:31 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6dbcee4e0b4868843938233eb2c37c927f674d69">6dbcee4e0b4868843938233eb2c37c927f674d69</a>
+<blockquote>
+<p>
+ Update MSVC makefiles.<br>
+<br>
+ Firstly, another version of nmake to cope with. In fixing this, I<br>
+ note that we haven't been setting MS_TOOLSET_VERSION in some cases.<br>
+ For building from the IDE this evidently doesn't matter, but I suspect<br>
+ it is required for building using nmake. Add those back in.<br>
+<br>
+ Thanks also to Julian for spotting that the logic to cope with<br>
+ &quot;Community&quot; vs &quot;Professional&quot; editions was failing due to extra<br>
+ quotes. Fixed here.<br>
+<br>
+ Also, msvclib.mak hadn't been updated for VS2017 or VS2019. Copy<br>
+ the relevant sections across. Possibly we should pull this code out<br>
+ to a separate file that we can !include so we only have to maintain<br>
+ it in one place.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-01 18:06: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=fb1a336ac4d2613a63dc0b6054f20f9a8a467fe9">fb1a336ac4d2613a63dc0b6054f20f9a8a467fe9</a>
+<blockquote>
+<p>
+ Bug 694692: Handle custom left-sidebearing values.<br>
+<br>
+ Ghostscript was ending up ignoring LSB values read from Metrics dictionaries.<br>
+<br>
+ This stemmed from some confusion about Freetype's incremental interface<br>
+ API get_metrics call. We had taken the references to &quot;overriding&quot; the metrics<br>
+ to mean it allowed for custom metrics to be passed into (and back out of)<br>
+ Freetype. That is not the case: it is intended to allow integrations supporting<br>
+ &quot;incomplete&quot; (primarily TrueType) fonts, such as PCL/XL embedded TTFs, that are<br>
+ permitted to omit certain tables - specifically, in this case, the hmtx and vmtx<br>
+ tables.<br>
+<br>
+ So, this drops that approach, and applies custom LSB values in our code.<br>
+<br>
+ Coincidentally, this also makes gs somewhat immune from a pending change in<br>
+ Freetype related to that get_metrics call.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-27 12:17: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=fce9bcfbda7acdf758fe6fb5264bb1e78eb39039">fce9bcfbda7acdf758fe6fb5264bb1e78eb39039</a>
+<blockquote>
+<p>
+ FAPI: fix applying offsets for glyph paths<br>
+<br>
+ If the renderer doesn't deal with replacing metrics, we apply an offset to the<br>
+ glyph before we pass it back into Ghostscript....<br>
+<br>
+ Except we weren't doing it for outline glyphs. Shouldn't (currently) affect<br>
+ freetype, but nevertheless....<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-03 11:42:27 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=596394e2cdff74488fb53fc818d7f5ca4d3ac1da">596394e2cdff74488fb53fc818d7f5ca4d3ac1da</a>
+<blockquote>
+<p>
+ Address a compiler warning from 2ed1184b7513<br>
+<br>
+ If unrolling the just created, incomplete save state fails we are out of safe<br>
+ options to carry on, so throw a fatal error.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-20 13:07:00 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2ed1184b75132c1ef10cfeec2415f13eaefc7f9e">2ed1184b75132c1ef10cfeec2415f13eaefc7f9e</a>
+<blockquote>
+<p>
+ oss-fuzz 27011: Improve handling of error during a &quot;save&quot;.<br>
+<br>
+ Previously, in the event of an error during a Postscript save operation, we<br>
+ could end up leaving a half formed save object in existence. If the error<br>
+ happened during the gs_gsave_for_save() function, that could end up leaving<br>
+ the graphics state cleanup &quot;out of sync&quot; with the save state cleanup at the<br>
+ final virtual memory cleanup as we shut down.<br>
+<br>
+ To resolve that, destroy the partially formed save state at the point of the<br>
+ error. This also means tweaking dorestore() to handle unrolling a save state<br>
+ without the graphics state reference in it.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-09 15:27:57 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=634d9c76a6c4c92273c7994cd228e01e263b9d7c">634d9c76a6c4c92273c7994cd228e01e263b9d7c</a>
+<blockquote>
+<p>
+ oss fuzz 27304: validate glyph offset against stream size<br>
+<br>
+ When we retrieve a glyph offset, check it is within the size of the sfnt data<br>
+ and if it is not, throw an error.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-02 15:10:33 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=97152401c7d4490be8f8112829ea440b95411702">97152401c7d4490be8f8112829ea440b95411702</a>
+<blockquote>
+<p>
+ Bug 703214 - treat some kinds of free objects as not free<br>
+<br>
+ The file in Bug 703214 has been edited incrementally a number of times.<br>
+ The bug is actually the creation of the initial file, which declares<br>
+ its xref table as having a section 7 entries long starting at object<br>
+ 1.<br>
+<br>
+ In fact, as is normal, the xref table starts at object 0 with the free<br>
+ entry at the start of the linked list. Because of the incorrect<br>
+ subsection header though, a PDF consumer should read this as being<br>
+ object 1, not object 0.<br>
+<br>
+ Obviously *all* the objects are then incorrect.<br>
+<br>
+ The incremental updates then redefined very object *except* object 1.<br>
+ The result of this is that these objects are all correctly defined. The<br>
+ file then attempts to render object 1, which is free. Acrobat can deal<br>
+ with this, which must mean it is ignoring the 'free' status of the<br>
+ object and reading the 'next free object' value as if it were the offset<br>
+ of the object.<br>
+<br>
+ Because the next free object is 0, and object 1 is the first object in<br>
+ the PDF file, and the preceding line is a comment, this actually works<br>
+ though I'm pretty certain its only by sheer luck, it really should not<br>
+ work at all.<br>
+<br>
+ Unfortunately, because of the way the the PDF interpreter reads PDF<br>
+ files and stores xref entires, we cannot easily detect an attempt to<br>
+ use a 'free' object and try to treat it as non-free. We have to do this<br>
+ upfront when we read the xref table. Because this is such a fluke and I<br>
+ believe not likely to be repeatable, I've tried to keep the condition<br>
+ for ignoring the free flag as tight as possible; The generation number<br>
+ must be exactly 65535 (the canonical value for the head of the free<br>
+ list), and the object number must be not zero. In this case only we<br>
+ will store the 'next free object number' as an offset.<br>
+<br>
+ If the object is truly free then either it is unused (in which case we<br>
+ will not use the xref entry) or it should have been superseded by a<br>
+ later incremental update, in which case we still won't use this entry.<br>
+ The only way we could try to use this entry is if the PDF file attempts<br>
+ to use a free entry.<br>
+<br>
+ This might change some handling of other broken files.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-02 00:48:45 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ed946acb20ec03426d35b0d9341c551e7e459184">ed946acb20ec03426d35b0d9341c551e7e459184</a>
+<blockquote>
+<p>
+ LGTM: Reduce goto use in zsort_continue.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-02 00:22:20 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4633ebbca0c9690003aebc9f4661c232c61cecdd">4633ebbca0c9690003aebc9f4661c232c61cecdd</a>
+<blockquote>
+<p>
+ LGTM fix: Reduce goto use in s_hex_process.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-01 12:56:09 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4cbe8fa61a3dc7bb8f9e425024b79a66950664ec">4cbe8fa61a3dc7bb8f9e425024b79a66950664ec</a>
+<blockquote>
+<p>
+ ;Bug 703208 Make changes from bug 703164 gsicc_lcms2mt.c over to gsicc_lcms2.c<br>
+<br>
+ Thanks to Stefano Rivera for catching this.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-01 10:25:06 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4ab2d212dba1475647508b085feb5ee93ea678f8">4ab2d212dba1475647508b085feb5ee93ea678f8</a>
+<blockquote>
+<p>
+ LGTM: Reduce gotos in s_LZWD_process<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-12-01 09:39:42 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cea43d89382fc253f64a7b942722a636080e8138">cea43d89382fc253f64a7b942722a636080e8138</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak with high level forms<br>
+<br>
+ As usual this does not exhibit with Ghostscript, because of garbage<br>
+ collection, and was observed with pdfi.<br>
+<br>
+ We transferred ownership of the form object to the local named<br>
+ resources dictionary, and removed the resource from the XObject chain<br>
+ of stored resources, but we didn't free the actual resource structure.<br>
+<br>
+ Rejigged the code order slightly because we need the resource for a<br>
+ few purposes before we transfer ownership and free it. Also fixed a<br>
+ typo and a misleading string (only used for debug purposes in each case)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-30 12:44:25 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cbe110579288e1d54afd5fecd0abe6e59fe49caa">cbe110579288e1d54afd5fecd0abe6e59fe49caa</a>
+<blockquote>
+<p>
+ Bug 698848 Fix mismatch of color space and number of components in JPEG2000<br>
+<br>
+ Peter Cherepanov and Ray Johnston had earlier patches. This fix builds<br>
+ on those and runs cleanly on our test files including Bug694909, which<br>
+ had an odd unknown cs jp2k image.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-30 13:21:22 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=080a23c44808a93fa27ba2d4dfdf8d8748a8e84a">080a23c44808a93fa27ba2d4dfdf8d8748a8e84a</a>
+<blockquote>
+<p>
+ Fix bug 703198: SEGV's with psdcmykog device and --saved-pages-test<br>
+<br>
+ This was a reference of a missing icc_table caused by the band count not<br>
+ being adjusted during saved-page playback as it was during writing. The<br>
+ orig_spec_op in the gx_device_printer structure was being set to the<br>
+ gdev_prn_spec_op, but this did not call the target device's spec_op, so<br>
+ it did not get the result from gxdso_adjust_bandheight that was needed.<br>
+<br>
+ Caused by commit 8df410c26.<br>
+<br>
+ Also clean up a left over extern in gxclrect.c (not related to the fix).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-30 10:41:20 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=50a9fad340a659e64c5dbc74125b97e16cf529de">50a9fad340a659e64c5dbc74125b97e16cf529de</a>
+<blockquote>
+<p>
+ Bug 703197 : Seg fault in close of x windows<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-28 13:37:45 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6c94917b4a36c19b30dc451f03715ec2c257d2e5">6c94917b4a36c19b30dc451f03715ec2c257d2e5</a>
+<blockquote>
+<p>
+ lgtm fixes: Fix previous fix to s_A85E_process.<br>
+<br>
+ continue in a do { } while (0); doesn't work.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-01 15:58: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=bac9c5d2ed82390da058653afbac0d9e29e9bd3f">bac9c5d2ed82390da058653afbac0d9e29e9bd3f</a>
+<blockquote>
+<p>
+ Searching for a marker in a stream, honor alignment<br>
+<br>
+ When searching for markers in a stream buffer, we were &quot;seeking&quot; to the point<br>
+ in the buffer, and casting to either a byte, ushort or a uint to make the<br>
+ value comparison. But we cannot do that on SPARC because of the strict<br>
+ alignment on that hardware.<br>
+<br>
+ So, we have to &quot;unpack&quot; the individual bytes from the stream to do the value<br>
+ comparison.<br>
+<br>
+ Note: there are slightly confusing comments in the code that mention being<br>
+ &quot;on a 16 bit boundary&quot; and &quot;on a 32 bit boundary&quot; - that's referring to the<br>
+ offset into the buffer, *not* the actual memory address alignment.<br>
+<br>
+ Found in testing on Solaris/SPARC<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-27 14:59:40 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3d33e44d3d014ee78a4505c37b244957066d7b12">3d33e44d3d014ee78a4505c37b244957066d7b12</a>
+<blockquote>
+<p>
+ Fix memory leak with copied type 1 fonts.<br>
+<br>
+ If we copy a type 1 font (for the benefit of the pdfwrite family of<br>
+ devices) then we make a copy of the Subrs and GSubrs as well, but the<br>
+ routine to free the copied font wasn't freeing those copies.<br>
+<br>
+ This isn't normally obvious because these are garbage collected, found<br>
+ while checking pdfi.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-27 10:19:23 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fec1090d129630c23f425c6aae5a4a1308a973da">fec1090d129630c23f425c6aae5a4a1308a973da</a>
+<blockquote>
+<p>
+ LGTM: Rejig s_A85E_process for goto's.<br>
+<br>
+ All gotos are now forwards.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-27 11:14:07 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2c3b29a81c5cb0859ea567657c646b06f7df4039">2c3b29a81c5cb0859ea567657c646b06f7df4039</a>
+<blockquote>
+<p>
+ Fix compiler warning<br>
+<br>
+ Explicitly cast gx_device_null pointer to a gx_device pointer.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-26 16:23:17 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f789ded2e122578af6e9e0350e487e7ff89e74ae">f789ded2e122578af6e9e0350e487e7ff89e74ae</a>
+<blockquote>
+<p>
+ Ensure the nulldevice has a proper set of device methods<br>
+<br>
+ gs_make_null_device uses the gs_null_device structure to create an<br>
+ instance of the nulldevice, but it did not call gx_device_fill_in_procs<br>
+ to set the device methods which are left as NULL in the declaration.<br>
+<br>
+ Since all device methods (except fill_rectangle) are expected to be<br>
+ real functions, not NULL, many places in the code do not check that<br>
+ the device method is not NULL before calling it. This could (and in<br>
+ pdfi did) lead to us attempting to execute 0x00 causing seg faults.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-24 18:20:39 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9aa09cbca96e722568be76c2de35b41ee9881ba5">9aa09cbca96e722568be76c2de35b41ee9881ba5</a>
+<blockquote>
+<p>
+ lgtm: Rejig gotos in gs_type2_interpret.<br>
+<br>
+ All gotos are now forwards. No change to actual operation of code.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-25 10:11:16 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=db51437d7799576dadeb91014b483d57a39e98ae">db51437d7799576dadeb91014b483d57a39e98ae</a>
+<blockquote>
+<p>
+ Coverity 364047: Structurally dead code.<br>
+<br>
+ The previous fix to gs_type1_interpret to make lgtm happy has upset<br>
+ Coverity. Coverity (incorrectly) believes that some code is now<br>
+ structurally dead, when actually there is a goto jumping into it.<br>
+<br>
+ I think we can make both happy by moving the code to the location of<br>
+ the last goto.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-25 08:07:28 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=09377ecc18f952fa7e29c1c884f5fcb493809577">09377ecc18f952fa7e29c1c884f5fcb493809577</a>
+<blockquote>
+<p>
+ pdfwrite - fix a compiler warning<br>
+<br>
+ remove a now unused variable<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-24 19:56:49 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8e912ff13757dcff888319f78c05297b4fde8359">8e912ff13757dcff888319f78c05297b4fde8359</a>
+<blockquote>
+<p>
+ pdfwrite - fix 2 memory leaks with metadata<br>
+<br>
+ Discovered with pdfi. There is a temporary buffer which wasn't being<br>
+ freed.<br>
+<br>
+ A more complex problem involves the Metadata value stored in the<br>
+ Catalog dictionary. A long comment describes why this is not freed as<br>
+ an 'otherResource', but experience contradicts the comment, the<br>
+ Metadata value is not freed along with the Catalog object.<br>
+<br>
+ I've altered this here to solve the memory leak but this may need more<br>
+ investigation.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-23 01:10:54 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=437c020e8f99f429b3b95f11c47ef452b7da287b">437c020e8f99f429b3b95f11c47ef452b7da287b</a>
+<blockquote>
+<p>
+ LGTM fixes: Rejig gs_type1_interpret to avoid backward gotos.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-23 00:27:52 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=63fc05354eae86931f5949086b1b11641f3e23c0">63fc05354eae86931f5949086b1b11641f3e23c0</a>
+<blockquote>
+<p>
+ LGTM: fn_PtCr_evaluate: Simplify gotos.<br>
+<br>
+ All gotos are now forwards.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-20 00:28:58 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c5ae96a828fa459c0093c578ddbfefe0ce0da5de">c5ae96a828fa459c0093c578ddbfefe0ce0da5de</a>
+<blockquote>
+<p>
+ Rework cf_decode_2d to minimise gotos.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-19 19:26:22 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0d6498f19173bf3213c289e3e4480e7eb0ee9868">0d6498f19173bf3213c289e3e4480e7eb0ee9868</a>
+<blockquote>
+<p>
+ Reduce use of goto within cf_decode_1d.<br>
+<br>
+ All gotos are now forwards. Hopefully this should assuage LGTM.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-21 12:26:40 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=42ab76c9eb52d5c7dd5f96e0bbee495b84c9d3de">42ab76c9eb52d5c7dd5f96e0bbee495b84c9d3de</a>
+<blockquote>
+<p>
+ First Page/Last Page - fix a memory leak<br>
+<br>
+ This doesn't exhibit on regular Ghostscript due to garbage collection,<br>
+ noticed it while running a Memento build of pdfi to track down a<br>
+ different memory leak.<br>
+<br>
+ We allocate the enumerator in flp_begin_typed_image() and so we need<br>
+ to free it in flp_image_end_image.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-20 11:45:50 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=bd48c43be5f736393372dffbad627ed6fc486238">bd48c43be5f736393372dffbad627ed6fc486238</a>
+<blockquote>
+<p>
+ Bug 703164: Endian issues with CMM<br>
+<br>
+ The interface code to the CMM was corrected to indicate when a<br>
+ endian swap was needed on the data. This should only occur<br>
+ in the case when we are dealing with transparency buffers<br>
+ during the put image blending operation that may include<br>
+ a color conversion. The final blend bakes the data as BE<br>
+ so if we are on a LE machine, the CMM will need to know to<br>
+ swap the bytes (assuming the pdf14 device is using 16bit buffers).<br>
+<br>
+ The code was rewritten to make it clear that this setting is no<br>
+ BE vs LE but simply an endian swap. That was a source of confusion.<br>
+<br>
+ Revealed in this testing was the lack of some proper error<br>
+ reporting during buffer conversions, which were fixed.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-20 16:01:33 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=bccfeb0626074ca7cf2a60b194509b8b94b38327">bccfeb0626074ca7cf2a60b194509b8b94b38327</a>
+<blockquote>
+<p>
+ Memento: Workaround VS2008 not having va_copy.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-20 15:34:54 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e2e50a951f3f06c48d908ea8f095e2d7ae2ee5e9">e2e50a951f3f06c48d908ea8f095e2d7ae2ee5e9</a>
+<blockquote>
+<p>
+ Bug 703161: Fix unknown error when interpolating transparent imagemasks.<br>
+<br>
+ Patch from Alex Cherepanov.<br>
+<br>
+ Add a dev_spec_op to check for whether copy_alpha is disabled or not.<br>
+ Clist devices with transparency disable it. Use this to bolster the<br>
+ decision made in mask_suitable_for_interpolation.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-20 12:35:59 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=86ed012049f58ef01d02c18b8f16c6f343be30db">86ed012049f58ef01d02c18b8f16c6f343be30db</a>
+<blockquote>
+<p>
+ demos/python: removed old unused code.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-19 19:08:04 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e83bc652ee4776b2c51878267f1c6f5aef0447db">e83bc652ee4776b2c51878267f1c6f5aef0447db</a>
+<blockquote>
+<p>
+ LGTM: Suppress warnings about gotos.<br>
+<br>
+ In these functions, for implementing state machines, gotos are<br>
+ inevitable.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-19 18:43:25 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cae348d95825d65319a5127f39a954bf68de9ca3">cae348d95825d65319a5127f39a954bf68de9ca3</a>
+<blockquote>
+<p>
+ Rejig dict_find so that gotos are all forwards.<br>
+<br>
+ Hopefully this will make lgtm happier.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-19 17:50:04 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5e23e7e9daab8498db642fc8ac241ba7f00a157b">5e23e7e9daab8498db642fc8ac241ba7f00a157b</a>
+<blockquote>
+<p>
+ LGTM: Attempt to avoid &quot;Expression has no effect&quot; warnings.<br>
+<br>
+ Some calls may be NOPs in the lgtm tests, but might not be in<br>
+ other builds. Attempt to label them as such.<br>
+<br>
+ Possibly we may need to label the call sites rather than the<br>
+ functions themselves.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-19 13:26:12 -0800
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=905dc88bb9fb75e39dd81ff0268215a1305d94c0">905dc88bb9fb75e39dd81ff0268215a1305d94c0</a>
+<blockquote>
+<p>
+ Change init values of PreserveEPSInfo and ParseDSCCommentsForDocInfo<br>
+<br>
+ This is needed for pdfi.<br>
+<br>
+ The docs (VectorDevices.htm) say these will defaulted to 'true' and<br>
+ the gs/PostScript code sets them to true, but they were initialized to<br>
+ false in the device itself.<br>
+<br>
+ The only place these variables are actually used is in<br>
+ pdf_document_metadata() where they are tested to decide whether to<br>
+ emit the Metadata.<br>
+<br>
+ This change makes no difference for gs and gs/pdf, but it will cause<br>
+ gpcl to start including Metadata in its pdfwrite output.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-17 11:24:28 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=385c2f5d06ec9f99be83d64e83b05296caa20051">385c2f5d06ec9f99be83d64e83b05296caa20051</a>
+<blockquote>
+<p>
+ Fix bug 703142: typecheck error caused by Length value with decimal point<br>
+<br>
+ Thanks to Peter Cherepanov for this patch.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-17 17:55:48 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c1a5382ab783cbae9fd5e069abcc89cb4195e89a">c1a5382ab783cbae9fd5e069abcc89cb4195e89a</a>
+<blockquote>
+<p>
+ Bug 703027: Tweak previous fix.<br>
+<br>
+ The previous fix was incomplete; the bounds for the overflow<br>
+ check were incorrect. Corrected here.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-17 13:32:10 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=658ddea8bc15f4ab7dd4cf1ff151828b9ce957f9">658ddea8bc15f4ab7dd4cf1ff151828b9ce957f9</a>
+<blockquote>
+<p>
+ Bug 703027: Avoid Infinite loop.<br>
+<br>
+ The problem here is that the scale is so large that the width<br>
+ overflows what will fit in an int, and becomes negative.<br>
+<br>
+ Harden the code by watching for such overflows, and abandoning<br>
+ interpolation if this happens.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-17 11:47:31 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0716daba34064520c2ae0a49edb88095aaceac3c">0716daba34064520c2ae0a49edb88095aaceac3c</a>
+<blockquote>
+<p>
+ Update makefiles for new nmake version.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-15 19:59:15 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f82f5a5e381f18a76d7099611202a281e61f343f">f82f5a5e381f18a76d7099611202a281e61f343f</a>
+<blockquote>
+<p>
+ Fix bug 703088. ASAN reports read outside allocated buffer of an image.<br>
+<br>
+ There was an area in gx_begin_image3_generic setup for bug 700538 to<br>
+ detect rangecheck but it did not check all extremes. Note that this<br>
+ stems from an absurd CTM in the PDF: 548.0 0 0 -1.43262569e+37 0 0 cm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-16 16:13:53 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0e2d58de146abc7bbb5b4f420086b57e500e9181">0e2d58de146abc7bbb5b4f420086b57e500e9181</a>
+<blockquote>
+<p>
+ Fix lgtm issue: int * int used as a size_t.<br>
+<br>
+ int * int can overflow, before being promoted. Best to promote one of<br>
+ the ints to a size_t before the operation, so we don't lose any bits.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-16 15:37: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=8acc8cf60d99cbd6c9da7c7fd7c2636b09e70624">8acc8cf60d99cbd6c9da7c7fd7c2636b09e70624</a>
+<blockquote>
+<p>
+ Tweak memento.c handling of memento.h header.<br>
+<br>
+ Intended to remove differences between all the different versions<br>
+ of memento.<br>
+<br>
+ Rather than manually editing memento.c as we copy it between<br>
+ gs/mupdf/extract we now have a MEMENTO_MUPDF_HACKS define to<br>
+ enable the mupdf specific changes (currently just where we find<br>
+ the header file).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-16 15:10:51 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b06da3dc08682c57001b3686af38eee0a49cb407">b06da3dc08682c57001b3686af38eee0a49cb407</a>
+<blockquote>
+<p>
+ Bug 703146: Fix assert in scan converter.<br>
+<br>
+ This is caused by lines changing in x position by more than 1&lt;&lt;31,<br>
+ and hence the sign bit of an int being confusing. (e.g. the difference<br>
+ between 0x7fffffff and 0x80000000 is positive, but appears negative<br>
+ when held in an int). Use an unsigned int instead.<br>
+<br>
+ This doesn't affect normal operation as the value is promoted to an<br>
+ int64_t before being used.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-16 10:32:06 +0000
+</strong>
+<br>Julian Smith &lt;julian.smith@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1f56cb0a80f9c0485ff224831c4db497da647c0a">1f56cb0a80f9c0485ff224831c4db497da647c0a</a>
+<blockquote>
+<p>
+ base/memento.c: fix coverity warnings about need to call va_end().<br>
+<br>
+ We now call va_end() for each va_list that we create with va_start() or<br>
+ va_copy().<br>
+<br>
+ We don't call va_end() for va_list's that are passed in as a function<br>
+ argument.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-13 22:39:26 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=07ff645bd83474f01c4fdb658df04f2626bafd7d">07ff645bd83474f01c4fdb658df04f2626bafd7d</a>
+<blockquote>
+<p>
+ Bug 702952: Minor fixes to conversion to V2 ICC Profile<br>
+<br>
+ The byte padding calculation was wrong and the padded bytes<br>
+ were being left uninitialized. In addition, the profile dump<br>
+ debug code had bit-rotted.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-13 16:45:31 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f0e2607a2c31f71a469c993b7c6c76db900ca5b1">f0e2607a2c31f71a469c993b7c6c76db900ca5b1</a>
+<blockquote>
+<p>
+ Update Memento to match MuPDF and Extract.<br>
+<br>
+ Mostly this is pulling in enhancements from Julian Smith.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-13 09:02:07 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2f585295725c43827544352852a8ed2a357395b9">2f585295725c43827544352852a8ed2a357395b9</a>
+<blockquote>
+<p>
+ Fix Coverity ID 363850<br>
+<br>
+ Correct a return to actually return a value (no match found).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-12 15:12:07 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6b1ee0c65a8caf8f81d2534402af945d2916feb7">6b1ee0c65a8caf8f81d2534402af945d2916feb7</a>
+<blockquote>
+<p>
+ pdfwrite - fix OCR processing<br>
+<br>
+ We were not correctly updating the operation and size variables after<br>
+ we had captured the bitmaps leading the code to error out and drop<br>
+ content.<br>
+<br>
+ Also, if the OCR engine initialisation fails, don't throw an error,<br>
+ just do nothing. Throwing an error results in us falling back to<br>
+ rendering the text as bitmaps.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 13:56: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=75e260886473a74a8d8ec133b0bae9fdee30818b">75e260886473a74a8d8ec133b0bae9fdee30818b</a>
+<blockquote>
+<p>
+ Squashed commit of pdfwrite_ocr branch.<br>
+<br>
+ This introduces OCR operation to the pdfwrite device.<br>
+<br>
+ The full development history can be seen on the pdfwrite_ocr branch.<br>
+<br>
+ The list of individual commits is as follows:<br>
+<br>
+ --------------------------------------------<br>
+ Interim commit for pdfwrite+OCR<br>
+<br>
+ This is the initial framework for pdfwrite to send a bitmap of a glyph<br>
+ to an OCR engine in order to generate a Unicode code point for it.<br>
+<br>
+ This code must not be used as-is, in particular it prevents the function<br>
+ gs_font_map_glyph_to_unicode from functioning properly in the absence<br>
+ of OCR software, and the conenction between pdfwrite and the OCR engine<br>
+ is not present.<br>
+<br>
+ We need to add either compile-time or run-time detection of an OCR<br>
+ engine and only use on if present, as well as some control to decide<br>
+ when to use OCR. We might always use OCR, or only when there is no<br>
+ Glyph2Unicode dictionary available, or simply when all other fallbacks<br>
+ fail.<br>
+<br>
+ --------------------------------------------<br>
+ Hook Tesseract up to pdfwrite.<br>
+<br>
+ --------------------------------------------<br>
+ More work on pdfwrite + OCR<br>
+<br>
+ Reset the stage of the state machine after processing a returned value<br>
+<br>
+ Set the unicode value used by the ToUnicode processing from the value<br>
+ returned by OCR.<br>
+<br>
+ Much more complex than previously thought; process_text_return_width()<br>
+ processes all the contents of the text in the enumerator on the first<br>
+ pass, because its trying to decide if we can use a fast case (all<br>
+ widths are default) or not.<br>
+<br>
+ This means that if we want to jump out an OCR a glyph, we need to track<br>
+ which index in the string process_text_return_width was dealing with,<br>
+ rather than the text enumerator index. Fortunately we are already<br>
+ using a copy of the enumerator to run the glyph, so we simply need<br>
+ to capture the index and set the copied enumerator index from it.<br>
+<br>
+ --------------------------------------------<br>
+ Tweak Tesseract build to include legacy engine.<br>
+<br>
+ Actually making use of the legacy engine requires a different set<br>
+ of eng.traineddata be used, and for the engine to be selected away<br>
+ from LSTM.<br>
+<br>
+ Suitable traineddata can be found here, for instance (open the link,<br>
+ and click the download button):<br>
+<br>
+ https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata<br>
+<br>
+ --------------------------------------------<br>
+ Add OCRLanguage and OCREngine parameters to pdfwrite.<br>
+<br>
+ --------------------------------------------<br>
+ Add gs_param_list_dump() debug function.<br>
+<br>
+ --------------------------------------------<br>
+ Improve use of pdfwrite with OCR<br>
+<br>
+ Rework the pdfwrite OCR code extensively in order to create a large<br>
+ 'strip' bitmap from a number of glyphs in a single call to the text<br>
+ routine. The hope is that this will provide better context for<br>
+ Tesseract and improved recognition.<br>
+<br>
+ Due to the way that text enumerators work, and the requirement to exit<br>
+ to the PostScript interpreter in order to render glyph bitmaps, I've had<br>
+ to abandon efforts to run as a fully 'on demand' system. We can't wait<br>
+ until we find a glyph with no Unicode value and then try to render all<br>
+ the glyphs up to that point (and all the following ones as well). It is<br>
+ probably possible to do this but it would mean rewriting the text<br>
+ processing code which is quite hideous enough as it is.<br>
+<br>
+ So now we render each glyph in the text string, and store them in a<br>
+ linked list. When we're done with the text we free the memory. If we<br>
+ find a glyph with no Unicode value then on the first pass we take the<br>
+ list of glyphs, create a big bitmap from them and send it to Tesseract.<br>
+ That should then return all the character codes, which we keep. On<br>
+ subsequent missing Unicode values we consult the stored list.<br>
+<br>
+ We need to deal specially with space glyphs (which make no marks) as<br>
+ Tesseract (clearly!) can't spot those.<br>
+<br>
+ Modify makefile (devs.mak) so that we have a preprocessor flag we can<br>
+ use for conditional compilation. Currently OCR_VERSION is 0 for no OCR,<br>
+ 1 for Tesseract, there may be higher numbers in future.<br>
+<br>
+ Add a new function to the OCR interface to process and return multiple<br>
+ glyphs at once from a bitmap. Don't delete the code for a single bitmap<br>
+ because we may want to use that in future enhancements.<br>
+<br>
+ If we don't get the expected number of characters back from the OCR<br>
+ engine then we currently abort the processing. Future enhancements;<br>
+ fall back to using a single bitmap instead of a strip of text, if we get<br>
+ *more* characters than expected, check for ligatures (fi, ffi etc).<br>
+<br>
+ Even if we've already seen a glyph, if we have not yet assigned it a<br>
+ Unicode value then attempt to OCR it. So if we fail a character in one<br>
+ place we may be able to recognise it in another. This requires new code<br>
+ in gsfcmap.c to determine if we have a Unicode code point assigned.<br>
+<br>
+ Make all the relevant code, especially the params code, only compile<br>
+ if OCR is enabled (Tesseract and Leptonica present and built).<br>
+<br>
+ Remove some debugging print code.<br>
+<br>
+ Add documentation<br>
+<br>
+ --------------------------------------------<br>
+ Remove vestiges of earlier OCR attempt<br>
+<br>
+ Trying to identify each glyph bitmap individually didn't work as well<br>
+ and is replaced by the new 'all the characters in the text operation'<br>
+ approach. There were a few vestiges of the old approach lying around<br>
+ and one of them was causing problems when OCR was not enabled. Remove<br>
+ all of that cruft here.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-11 15:34:31 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8aa60c55d789c9c4d9e600162a1233a2da7ba516">8aa60c55d789c9c4d9e600162a1233a2da7ba516</a>
+<blockquote>
+<p>
+ Fix bug 703125: -dNOINTERPOLATE leaves 'true' boolean on the stack.<br>
+<br>
+ Thanks to Peter Cherepanov for spotting this. This patch is slightly<br>
+ different to his in that it makes -dNOINTERPOLATE=false enable interpolation<br>
+ at the default level (the original patch and the old code would have<br>
+ disabled interpolation even with 'false'. This version makes the NOINTEPOLATE<br>
+ and DOINTERPOLATE options operate more symmetrically, however it is sort of<br>
+ moot since both of these options are intended to be replaced by the better<br>
+ control on image interpolation provided by -dInterpolateControl=#<br>
+<br>
+ Operation tested with fts_17_1712.pdf using the various command line options.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-10 23:38:08 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7d1f774ccf8d3c96dc9a40d317e1448cb5a6475a">7d1f774ccf8d3c96dc9a40d317e1448cb5a6475a</a>
+<blockquote>
+<p>
+ Bug 701804: Fix for device that causes buffer overflows<br>
+<br>
+ This contributed device is odd how it changes its color model.<br>
+ Unfortunately it does not change the ICC profile. This mismatch<br>
+ between the ICC profile and the color information that is<br>
+ being changed by the device causes all sorts of problems. This<br>
+ should fix the issue.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-11 12:22:39 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d3a0d4c4c5e6c7c1662094500f25c11b27016268">d3a0d4c4c5e6c7c1662094500f25c11b27016268</a>
+<blockquote>
+<p>
+ MSVC: Add sanitize configurations/targets.<br>
+<br>
+ While we have 64bit configurations, these will only work for 32<br>
+ bit builds at the moment, due to MSVC not supporting 64bit builds.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-10 13:00:49 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c2fa28dbaa4c238eba4c8236d7da3a12113b734c">c2fa28dbaa4c238eba4c8236d7da3a12113b734c</a>
+<blockquote>
+<p>
+ PDF interpreter - fix searching for missing Resources in parent object<br>
+<br>
+ Bug #703105 &quot;PDF file gives &quot;Unable to determine object number...&quot; and output is missing some images.&quot;<br>
+<br>
+ As per the bug thread; the PDF file has annotations which are deeply<br>
+ nested forms. The final form stream draws an Image XObject but the<br>
+ Form dictionary does not contain a /Resources dictionary so we are unable<br>
+ to resolve the name.<br>
+<br>
+ The form which calls the final form *does* define the missing XObject,<br>
+ this is pretty clearly illegal but Acrobat copes with it. In fact the<br>
+ Ghostscript PDF interpreter has code to deal with it too, but there<br>
+ was a bug in it, it pops an object that was never pushed, resulting in<br>
+ the code being unable to find the resource.<br>
+<br>
+ Fixed very simple here. Also uploaded the simplified file for this bug<br>
+ and the file for the original bug (700493) to the test repository.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-09 15:39:41 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9a7452d624e9ef8f284869a2943b3751ecb6dbd6">9a7452d624e9ef8f284869a2943b3751ecb6dbd6</a>
+<blockquote>
+<p>
+ toolbin/localcluster/clusterpush.pl: exclude extract's src/build.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-09 13:53:46 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5a3812294b479fbae21e7d0fa3e1c6e0887fe51e">5a3812294b479fbae21e7d0fa3e1c6e0887fe51e</a>
+<blockquote>
+<p>
+ api_test: Simplify pointer hiding.<br>
+<br>
+ We can get pointer reuse that can vary from run to run, so we<br>
+ resort to just using null/non-null pointer hiding.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-09 13:31:23 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=40d306bf6707c365996eb1d41782ca3f063311d0">40d306bf6707c365996eb1d41782ca3f063311d0</a>
+<blockquote>
+<p>
+ ps2write - fix use of /.HWMargins with ps2write output<br>
+<br>
+ Bug #703017 &quot;When print a file created with pdf2ps command with a PDF driver, the image shifts to the upper right as the number of pages increases.&quot;<br>
+<br>
+ The bug report here is, unfortunately, insufficient to duplicate and<br>
+ resolve the problem. The missing information was supplied quite<br>
+ independently by the user 'vyvup' on the #ghostscript IRC channel. See<br>
+ the #ghostscript logs at around 08:45 on November 9th 2020.<br>
+<br>
+ https://ghostscript.com/irclogs/20201109.html<br>
+<br>
+ The important missing information is that the device must have the<br>
+ Ghostscript-specific page device key /.HWMargins set. When this is set<br>
+ and has non-zero values the offsets are applied cumulatively on every<br>
+ page by the code in pdfread.ps. This is because we set up the page<br>
+ 'view' before we save the current setup in the ps2write dictionary<br>
+ under the 'pagesave' key. When we restore back to that at the end of the<br>
+ page it therefore does not remove the translation applied to account<br>
+ for the /.HWMargins.<br>
+<br>
+ Here we just shift the save so that it occurs before we apply the page<br>
+ size setup.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-07 13:14:06 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cceb68900b433e7ce518619b9dd2ceb01c4fed9d">cceb68900b433e7ce518619b9dd2ceb01c4fed9d</a>
+<blockquote>
+<p>
+ Fix bug 688166. EPS DSC comment processing not terminating properly.<br>
+<br>
+ The example files of this bug do not have %%EndComments before other<br>
+ BoundingBox comments which confuse the image placement logic resulting<br>
+ in a blank page.<br>
+<br>
+ This patch, provided by Peter Cherepanov, fixes the problem by stopping<br>
+ the DSC processing when (%%BeginProlog) (%%BeginSetup) or %%EndComments<br>
+ is encountered.<br>
+<br>
+ Cluster regression passes, showing only 1 file that rotates differently<br>
+ when -dEPSFitPage is used (just to insure that DSC processing is OK).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-06 16:31:11 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=abe5348a1de7793a5d4d6ecfa4d054e5f94731de">abe5348a1de7793a5d4d6ecfa4d054e5f94731de</a>
+<blockquote>
+<p>
+ apitest: Hide pointer values in output.<br>
+<br>
+ This should enable the runtests values to be consistent.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-06 11:18:47 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2f6d9adb2e1cf6d7043c1de6168fee42dcb2cb8f">2f6d9adb2e1cf6d7043c1de6168fee42dcb2cb8f</a>
+<blockquote>
+<p>
+ Bug 702005 : rectfill and transparency<br>
+<br>
+ If we end up in the rectfill operation and we have transparency<br>
+ make sure that we take the path that uses gs_fill to ensure that<br>
+ pdf14_fill_path is executed, which will update the marking parameters.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-07 00:33:46 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=63281fa98f6df0864315a9fc78ef436a6d96f90a">63281fa98f6df0864315a9fc78ef436a6d96f90a</a>
+<blockquote>
+<p>
+ jbig2dec: Add casts to silence a compiler warning.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-05 21:24:13 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2a427e4dfb0b74f121b846e7d08e8c80db0f5f37">2a427e4dfb0b74f121b846e7d08e8c80db0f5f37</a>
+<blockquote>
+<p>
+ Bug 703087: CIEBased color space with overprint<br>
+<br>
+ If the source space is CIEBased PS type, then be<br>
+ sure to use the equivalent ICC color space in<br>
+ determining the overprint drawn components.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-05 12:40:00 -0800
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0132ddfb73e316303fe382aed939f1145052d15c">0132ddfb73e316303fe382aed939f1145052d15c</a>
+<blockquote>
+<p>
+ Bug 703086 -- Disable trying to preserve Movie annotations<br>
+<br>
+ Movie annotations are not implemented. This fix just disables the attempt to<br>
+ preserve them, so that the pdfwrite output will be valid.<br>
+<br>
+ This file has a /Movie annotation that references a local file that<br>
+ isn't included in the PDF, so it will never play properly anyway.<br>
+<br>
+ The annotation tries to reference a stream in its /Poster entry (for<br>
+ the image preview of the Movie), and this was not being handled<br>
+ correctly.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-03 22:00:17 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=bdf7cf8b6c7c97531aac14e16b9d2c16775ae8c8">bdf7cf8b6c7c97531aac14e16b9d2c16775ae8c8</a>
+<blockquote>
+<p>
+ Fix Bug 702034. Missing image to DeviceN devices.<br>
+<br>
+ The file from Bug 693300 has a blank image when going to DeviceN devices<br>
+ such as psdcmyk and tiffsep. The CompatibleOverprint blend mode must be<br>
+ set before the transparency group is pushed.<br>
+<br>
+ Add a .special_op for SupportsDevn to let the PostScript PDF interpreter<br>
+ detect that the device supports separations.<br>
+<br>
+ Make sure the mark fill rect for the knockout case handles<br>
+ the hybrid case of additive process colors with subtractive spots<br>
+ and overprint.<br>
+<br>
+ And make sure the group that is pushed in gstrans.c for text knockouts<br>
+ uses compatible overprint if needed.<br>
+<br>
+ Ray did the PS parts and Michael did the pdf14dev parts.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-04 09:10:26 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e6d34e7d08dac91b5b3b858c23e186a0d3bcbefc">e6d34e7d08dac91b5b3b858c23e186a0d3bcbefc</a>
+<blockquote>
+<p>
+ pdfwrite - Fix potential seg faults with ColorConversionStrategy<br>
+<br>
+ Bug #702885 &quot; ICC profile management can lead to a crash due to lack of reference counting of profiles&quot; ICC profile management can lead to a crash due to lack of reference counting of profiles<br>
+<br>
+ See the bug report for details, this commit removes the dereference of<br>
+ the ICC profile as recommended by Michael in that thread.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-03 15:21:46 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=10036de9c385d900f2ec0312908954ab77664438">10036de9c385d900f2ec0312908954ab77664438</a>
+<blockquote>
+<p>
+ Update clusterpush.pl for extract jobs.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-11-03 09:24:37 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b4c9f0004f950a7f55fff5777c6fa0d74d1f54bd">b4c9f0004f950a7f55fff5777c6fa0d74d1f54bd</a>
+<blockquote>
+<p>
+ Fix bug 702957, 702971. PageList problems with PDF input files.<br>
+<br>
+ Thanks to Peter Cherepanov for this fix.<br>
+<br>
+ The page skipping was caused by not disabling the PageHabdler in<br>
+ even or odd page selection modes due to a typo (Pagelist instead of<br>
+ PageList). The PDF interpreter fed only the odd (or even pages),<br>
+ and then the PageHandler also skipped every other page.<br>
+<br>
+ Also correct log messages and associated operand stack mess-up.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-31 18:38:51 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3f191b620de1b1cdead14305aac09ad49340828f">3f191b620de1b1cdead14305aac09ad49340828f</a>
+<blockquote>
+<p>
+ Fix another SEGV with BGPrint due to device_unsubclass<br>
+<br>
+ The printer device needs to have the bg_print structure external to the<br>
+ device so that when the device is freed the bg_print communication area<br>
+ shared with the thread doesn't get freed. This is similar to the clist<br>
+ band_range_list issue.<br>
+<br>
+ The SEGV was seen with 15-01.BIN as it unsubclasses the PCL_Mono_Palette<br>
+ gs_pcl_mono_palette_device device.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-31 10:48:22 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8df410c269150bce143d3b8875ac9d60a013d206">8df410c269150bce143d3b8875ac9d60a013d206</a>
+<blockquote>
+<p>
+ Set orig_spec_op for printer class devices so it forwards properly.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-29 15:15:00 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2c5a8a34dd741936469f0500cfebe364d8a1fdc3">2c5a8a34dd741936469f0500cfebe364d8a1fdc3</a>
+<blockquote>
+<p>
+ FIx SEGV with gx_device_unsubclass when child is a clist device.<br>
+<br>
+ The 'band_range_list' was a structure of two pointers within the device<br>
+ (gx_device_clist_writer) so when it was copied, the 'ccl' pointer could<br>
+ point to the band_range_list structure in the child device. This pointer<br>
+ would no longer be valid when the child device was freed as the device<br>
+ unsubclass did.<br>
+<br>
+ Detected with 15-01.BIN as it called gx_device_unsubclass for the PCL_mono<br>
+ subclass device. With -Z@ the band_range_list would be overwritten with<br>
+ (known, but invalid pointer) data resulting in the SEGV.<br>
+<br>
+ Cured by putting the band_range_list into the clist_writer 'data' area.<br>
+ This area is not GC'ed and since it points into other memory in the<br>
+ clist writer 'cbuf' area, it is internal to the clist writer.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-26 20:45: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=9848e66c0687645ed533e50557c233bf196ec9b9">9848e66c0687645ed533e50557c233bf196ec9b9</a>
+<blockquote>
+<p>
+ Make gs_next_ids thread safe by using the core-&gt;monitor.<br>
+<br>
+ This cures data races with gs_next_ids seen with helgrind and BGPrint<br>
+ and/or NumRenderingThreads.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-26 18:36:16 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=eec6fd158ee477facfb4bf9edd4e99506c195732">eec6fd158ee477facfb4bf9edd4e99506c195732</a>
+<blockquote>
+<p>
+ Pacify helgrind so that gs_heap_status is thread safe.<br>
+<br>
+ The 'heap_available' is documented as a 'snapshot', but is not a<br>
+ thead risk. This change locks around the collection of the info to<br>
+ be returned in the gs_memory_status structure.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-15 08:51:08 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=13ed12281b6b60804172a6844081a9ea3e067d2d">13ed12281b6b60804172a6844081a9ea3e067d2d</a>
+<blockquote>
+<p>
+ Fix problem with BGPrint and multi-threaded rendering caused by commit cca27988<br>
+<br>
+ The unconditional call to enable multi-threaded rendering during set up of the<br>
+ gx_device_printer as a clist caused the SEGV of bug 702181, but enabling<br>
+ multi-threaded rendering here isn't correct since it is usually done when we<br>
+ output the page (gdev_prn_output_page_aux). The problem is that BGPrint would<br>
+ setup a new clist device to render the page, but needs to enable multi-threaded<br>
+ rendering for the background clist device. Do this if NumRenderThreads &gt; 0.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-22 13:10:04 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4ceaf92815302863a8c86fcfcf2347e0118dd3a5">4ceaf92815302863a8c86fcfcf2347e0118dd3a5</a>
+<blockquote>
+<p>
+ Fix gp_file allocations to use thread_safe_memory.<br>
+<br>
+ The gpmisc.c does allocations for gp_file objects and buffers used by<br>
+ gp_fprintf, as well as gp_validate_path_len. The helgrind run with<br>
+ -dBGPrint -dNumRenderingThreads=4 and PCL input showed up the gp_fprintf<br>
+ problem since the clist rendering would call gp_fprintf using the same<br>
+ allocator (PCL's chunk allocator which is non_gc_memory). The chunk<br>
+ allocator is intentionally not thread safe (for performance).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-28 12:17:23 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=033ed8bf196b1cddd681a9b32d9398bf6bc02d24">033ed8bf196b1cddd681a9b32d9398bf6bc02d24</a>
+<blockquote>
+<p>
+ Bug 702671: Make sure X11 device cleans up with closure<br>
+<br>
+ The issue is that the pdf14 device will close and reopen the<br>
+ target device under certain cases and the X11 devices were not<br>
+ cleaning themselves up sufficiently. Also added a finalize<br>
+ method where the call to XCloseDisplay should actually be made.<br>
+<br>
+ The pdf14 device does this close and open dance to ensure that<br>
+ the page_has_transparency parameter will be set in the device.<br>
+ It is possible that we could end up in the pdf14 device<br>
+ push without page_has_transparency if the call is done from<br>
+ Postscript code. The PDF interpreter<br>
+ always sets the page_has_transparency value before doing the<br>
+ push so this should not be a problem with PDF.<br>
+<br>
+ Thanks to Chris Liddell for helping with this.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-29 10:43:46 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=36568c21f45ed0686abec8316f56bc171ab416a8">36568c21f45ed0686abec8316f56bc171ab416a8</a>
+<blockquote>
+<p>
+ Add /Type /Outlines to Outlines entry for pdfwrite<br>
+<br>
+ This is technically required, but appears to be harmless to omit it.<br>
+ However, since the fix is trivial, I have fixed it.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-29 15:49:11 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=14a3807f1a13d7a4fed1b1ef24852d55a4361431">14a3807f1a13d7a4fed1b1ef24852d55a4361431</a>
+<blockquote>
+<p>
+ Fix ios build script and headers<br>
+<br>
+ The predefined headers for the ios build were missing the size_t updates.<br>
+<br>
+ We also don't want to try using CAL with ios (at least, for the moment).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-28 17:07:20 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=10ff34748a56d521b5a901c11edb4b6408a2860a">10ff34748a56d521b5a901c11edb4b6408a2860a</a>
+<blockquote>
+<p>
+ Fix an option typo: &quot;nonredundnat&quot; -&gt; &quot;nonredundant&quot;<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-28 15:31:28 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ddd5cf4ddcfba1a3e85708b75efa0d8f8f4156f6">ddd5cf4ddcfba1a3e85708b75efa0d8f8f4156f6</a>
+<blockquote>
+<p>
+ pdfwrite - fix Type 4 Chroma-keyed images with Colour Conversion<br>
+<br>
+ Bug #702698 &quot;convert Grayscale error in output&quot;<br>
+<br>
+ Images with a /Mask where the Mask is a range of values, and hence a<br>
+ chroma-keyed image, as opposed to the Mask being an external Image<br>
+ Mask, and therefore a stencil cannot be preserved as such when we are<br>
+ colour converting.<br>
+<br>
+ There is no reliable way to be certain that the colour of the image<br>
+ samples after conversion and the converted Mask values will relate in<br>
+ the same way. Its entirely possible for multiple RGB values to map to<br>
+ the same gray value for instance, and if that happens to be a masked<br>
+ value then pixels will be masked which were not originally.<br>
+<br>
+ This commit checks the ColorConversionStrategy and if it is not<br>
+ LeaveColorUnchanged then we further examine the Mask. If the Mask is a<br>
+ range of values then we consider the colour space of the image.<br>
+<br>
+ If ColorConversionStrategy is not LeaveColorunchanged and the image has<br>
+ a range of values and it is not in the target colour space, then we<br>
+ cannot preserve it. In this case we fall back to either preserving the<br>
+ image, and creating a clip path from the chroma key and the image<br>
+ samples, or (if Version &lt; 1.3) we fall right back to writing each image<br>
+ sample as a filled rectangle.<br>
+<br>
+ This does, of course, result in larger output.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-13 08:16:11 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=81ed663a4a81a265afecbc7b7c7835ba4f5f24e1">81ed663a4a81a265afecbc7b7c7835ba4f5f24e1</a>
+<blockquote>
+<p>
+ Change default ShowAcroForm to true to match Adobe Acrobat.<br>
+<br>
+ Change it and the documentation. It may be that older Acrobat defaulted to<br>
+ ignoring AcroForm, but current Adobe doesn't.<br>
+<br>
+ Also fix pdf_draw draw_form_field to match check in pdf_main process_trailer_attrs<br>
+ for the file from Bug 692447 which has null entries in Fields array.<br>
+<br>
+ Fix indentation in pdf_main process_trailer_attrs area that processes<br>
+ AcroForm dict.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-17 12:52:36 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8313e4f30bef7c50711cd503c3037184a7850d51">8313e4f30bef7c50711cd503c3037184a7850d51</a>
+<blockquote>
+<p>
+ Fix Bug702995: Inconsistent auto-rotation of EPS with EPSFitPage.<br>
+<br>
+ We need to defer the EPSFitPage scaling, centering and rotation until<br>
+ after both the the %%BoundingBox and/or the %%HiResBoundingBox have been<br>
+ processed. Doing one after the other results in slight rounding diffs<br>
+ depending on the resolution. Change to save the value (prefering the<br>
+ HiResBoundingBox) and do the scaling/translate/rotate only once when<br>
+ %%EndComments is processed.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-13 08:21: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=76359f0c03e8b4d8db7359d521865894ac7a4592">76359f0c03e8b4d8db7359d521865894ac7a4592</a>
+<blockquote>
+<p>
+ Fix bug 702951. Valgrind error in image_render_interpolate_landscape_icc<br>
+<br>
+ Make the same adjustment in image_render_interpolate_landscape_icc() as<br>
+ was done in image_render_interpolate_icc() by the commit a936cf76.<br>
+<br>
+ Thanks to Peter Cherepanov for this bug report and the patch. Regression<br>
+ testing looks fine and the previous code looks like it would bump the<br>
+ p_cm_interp value twice in some cases previously.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-23 08:54: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=9cdacf4e5efcf7b92ff7a02158a47ac04cc12fa7">9cdacf4e5efcf7b92ff7a02158a47ac04cc12fa7</a>
+<blockquote>
+<p>
+ Revise font dir global_glyph_code callback API<br>
+<br>
+ The global_glyph_code callback API relies on the name table being avaiable in<br>
+ the gs_lib_ctx and accessible via the gs_memory_t object.<br>
+<br>
+ This is not something that is true, nor can we make it true, for pdfi. Because<br>
+ pdfi is required to integrate with the Postscript interpreter, we cannot have<br>
+ the gs_lib_ctx &quot;top_of_system&quot; pointer point to the pdfi context.<br>
+<br>
+ So, change the global_glyph_code API so it takes a gs_font pointer, instead of<br>
+ a gs_memory_t pointer. The Postscript implementation will work exactly the same,<br>
+ just accessing the gs_memory_t through the gs_font pointer.<br>
+<br>
+ But it allows pdfi to grab it's own context through the gs_font &quot;client_data&quot;<br>
+ pointer.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-20 11:20: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=17cec404918eb458b63aba71fe680264f2a00179">17cec404918eb458b63aba71fe680264f2a00179</a>
+<blockquote>
+<p>
+ Update freetype to 2.10.4<br>
+<br>
+ Also includes:<br>
+ Work around a change in the zlib API for 1.2.11<br>
+<br>
+ where it's used in the Freetype/zlib interface debugging code.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-21 16:11:23 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=660aa7a7eaeca446d97332ae1655a3612c9bcfe6">660aa7a7eaeca446d97332ae1655a3612c9bcfe6</a>
+<blockquote>
+<p>
+ Add error check on gx_device_text_begin return_error<br>
+<br>
+ gx_device_text_begin may return an error if there is still<br>
+ work to be done on a pattern device. Catch that before<br>
+ the check on *ppte, which will not be a valid value in this<br>
+ case.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-22 17:20: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=7670751b807e369e4bb768cce2812a8d8719b8fa">7670751b807e369e4bb768cce2812a8d8719b8fa</a>
+<blockquote>
+<p>
+ Fix typos in comments of zugferd program<br>
+<br>
+ As (mostly) spotted by Lisa Fenn, fix comments in typos and messages.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-21 19:20: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=b231780b739720451e8d6517b2e97a07908b7469">b231780b739720451e8d6517b2e97a07908b7469</a>
+<blockquote>
+<p>
+ lcms2: automatically align blocks appropriately on sparc.<br>
+<br>
+ The sparc architecture requires pointers within structures to<br>
+ be at 64bit alignment, even if they are 32bit pointers.<br>
+<br>
+ LCMS2 allows for this by having a CMS_PTR_ALIGNMENT symbol<br>
+ that can be predefined. If it's not predefined, it defaults to<br>
+ sizeof(void *).<br>
+<br>
+ We update the source here so that when building for sparc, it<br>
+ defaults to 8. This shouldn't affect gs, as it sets the value<br>
+ via configure/make. I believe our lcms2 repo as used in MuPDF<br>
+ is autogenerated from this though, and this will help us there.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-20 12:38:24 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=337be82addaaf8740b60e2a0cf354ae96d46468f">337be82addaaf8740b60e2a0cf354ae96d46468f</a>
+<blockquote>
+<p>
+ Correct OCR docs for multiple languages.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-20 09:49: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=41ef9a0bc36b9db7115fbe9623f989bfb47bbade">41ef9a0bc36b9db7115fbe9623f989bfb47bbade</a>
+<blockquote>
+<p>
+ Bug 702985: drop use of FT_CALLBACK_DEF() def<br>
+<br>
+ From 2.10.3, Freetype disappeared the FT_CALLBACK_DEF() macro, which is what<br>
+ we used when defining our callbacks from Freetype.<br>
+<br>
+ No guidance forthcoming from the Freetype developer who made those changes,<br>
+ so change to explicitly declaring the callbacks file static.<br>
+<br>
+ Should fix the reported build failures.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-31 11:07:18 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3b2f9c53c8e5cebcf80a4158684b820d9a0a2f73">3b2f9c53c8e5cebcf80a4158684b820d9a0a2f73</a>
+<blockquote>
+<p>
+ devices/vector/gdevtxtw.c: updated extract output to match mupdf.<br>
+<br>
+ Text extraction now works for Python2.pdf and zlib.3.pdf.<br>
+<br>
+ Added GlyphWidths[] and SpanDeltaX[] arrays, containing information required<br>
+ for generating intermediate format used by extract system.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-30 13:09:51 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=de5cb392ad32d4e44646b144f435ad186f3dbabe">de5cb392ad32d4e44646b144f435ad186f3dbabe</a>
+<blockquote>
+<p>
+ doc/VectorDevices.htm: added brief info about txtwrite TextFormat=4.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-19 16:34: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=5c115ea0d27640b2a3940410c6eeef9e7d17f178">5c115ea0d27640b2a3940410c6eeef9e7d17f178</a>
+<blockquote>
+<p>
+ Fix indeterminisms within halftoned rendering.<br>
+<br>
+ When checking for pdf14 being in an opaque state, we check to see<br>
+ whether we are either constructing an SMask or are within an<br>
+ SMask. We need to use a dev spec op for this, as we might be within<br>
+ a clipper device, and so not actually be directly a pdf14 device.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-19 11:24:15 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5fc95757e3f732d5806a9a74967d70571eec91db">5fc95757e3f732d5806a9a74967d70571eec91db</a>
+<blockquote>
+<p>
+ New file - program to assist in creating ZUGFeRD electronic invoices<br>
+<br>
+ While documenting the process for creating a ZUGFeRD invoice from a PDF<br>
+ file and an XML invoice it became clear to me that it was beyond any<br>
+ reasonable expectation of a user to be able to use it unaided. So this<br>
+ program assists in the creation of a ZUGFeRD document.<br>
+<br>
+ The program requires two command line parameters; -sZUGFeRDProfile=<br>
+ which contains a fully qualified path to an appropriate (correct colour<br>
+ space) ICC profile, and -sZUGFeRDXMLFile= which contains a fully<br>
+ qualified path to the XML invoice file.<br>
+<br>
+ Example command line is in the comments, and a usage message if the user<br>
+ fails to provide either of the required elements. Obviously the user<br>
+ must also set -dPDFA=3 and -sColorConversionStrategy in order to create<br>
+ a valid PDF/A-3b file.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-14 11:28:56 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=23afb36c6d8c5368a7df09718b872f83c510cab7">23afb36c6d8c5368a7df09718b872f83c510cab7</a>
+<blockquote>
+<p>
+ Bug 702891 and Bug 700593 Fix pdf14 device color procs<br>
+<br>
+ The pdf14 color mapping procs clearly had some issues as they are reading uninitialized<br>
+ memory and using transfer functions that would not make sense with changing<br>
+ color spaces. Also, the soft mask should not be going through the effective_transfer.<br>
+ It has its own transfer function to deal with. Careful reading of the PDF spec revealed<br>
+ that the transfer function is only to be used if the color being drawn is opaque. It<br>
+ states that this is true if the blend mode is normal, stroke and fill alpha are 1.0, and<br>
+ no soft mask is present. Also, an image that has a soft mask does not use the transfer<br>
+ function. These changes resulted in a lot of diffs. I reviewed them and<br>
+ did some checking of color values to verify things are ok.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-14 15:05: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=fceb46d81b0277b335481368dcc5a62e6383575e">fceb46d81b0277b335481368dcc5a62e6383575e</a>
+<blockquote>
+<p>
+ PDF interpreter (with pdfwrite) - another non-square scaling stroke fix<br>
+<br>
+ Bug #702946 &quot;Ghostscript creates PDF originals with black stripes&quot;<br>
+<br>
+ This is another case of the problem in bug #702900, The commit to fix<br>
+ that problem (d5494de2cab28b91ba360d15b8afffef50a3f421) fixed four<br>
+ places in the code, but missed a fifth place because it is distant from<br>
+ the other four. The offending procedure is setstrokeforTrpreservation.<br>
+<br>
+ This commit adds the required code to that location to go along with the<br>
+ other four, at the same time:<br>
+<br>
+ 1) Move the actual code to calculate the width into a procedure<br>
+ 2) Have all 5 places use that procedure<br>
+ 3) Improve the non-square calculation (hypotenuse/2 instead of hypotenuse)<br>
+ 4) Add some 'tolerance' to the equality test.<br>
+<br>
+ The tolerance is because both the test file here and in 702900 have a<br>
+ CTM which is minutely non-square. In this case the c and y scaling<br>
+ differ by less than 0.0001. The intention of this code is actually to<br>
+ deal with non-square resolutions, rather than non-square CTM, and it<br>
+ does so by calculating the hypotenuse of a triangle where the x an y<br>
+ values are the linewidth in each direction. In fact the hypotenuse/2<br>
+ seems a closer approximation. But in any event its incorrect, better to<br>
+ simply use the linewidth if the difference between the two is not very<br>
+ large. (eventually, with pdfi, we will probably do away with this<br>
+ horrible kludge entirely)<br>
+<br>
+ This causes minor but useful progressions in the test suite files<br>
+ Bug695841.pdf, clipping_image_problem.pdf and<br>
+ sumatra/712_-_image_not_displaying.pdf. most notably the latter.<br>
+<br>
+ It also produces slightly less bold output for the test file here,<br>
+ which Acrobat shows as matching precisely with the original.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-07 17:41:36 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c6ce09aa5c9ed0c66c597478a2c4fb75aa25267f">c6ce09aa5c9ed0c66c597478a2c4fb75aa25267f</a>
+<blockquote>
+<p>
+ Revert &quot;Remove deprecated opvp/oprp devices from default build&quot;<br>
+<br>
+ This reverts commit 66c2469c7d4543f32d6dc93edf1d649e809b8419.<br>
+<br>
+ A user got in touch to say that he maintains a printer driver &quot;back end&quot; that<br>
+ uses the opvp device. So reinstating it - at least we know it's getting<br>
+ tested.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-12 13:19: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=5af4f31bcda18c6fb7d14501c0a22697a7f49ac0">5af4f31bcda18c6fb7d14501c0a22697a7f49ac0</a>
+<blockquote>
+<p>
+ Update tesseract traineddata loader with new path search.<br>
+<br>
+ First, we look in TESSDATA_PREFIX (if defined).<br>
+<br>
+ If not found there, we look in ROMFS (in tessdata).<br>
+<br>
+ If not found there, we look at the configured &quot;tessdata&quot; path<br>
+ (which defaults to ${datadir}/tessdata). (${datadir} defaults to<br>
+ ${prefix}/share on unix, and ${gsrootdir} on windows.)<br>
+<br>
+ If not found there, we look in the current directory.<br>
+<br>
+ Update doc/Devices.html (and fix some indexing).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-13 11:05:00 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=848077c4f7b8b9131263b483ba90b05e0ee4e9d2">848077c4f7b8b9131263b483ba90b05e0ee4e9d2</a>
+<blockquote>
+<p>
+ pdfwrite - reorder code to change evaluation order of image parameters<br>
+<br>
+ Bug #702961 &quot;GS produces significantly larger PDFs with same settings as Adobe Distiller&quot;<br>
+<br>
+ This is a problem with the interaction of various image parameters. The<br>
+ relevant options are PassThroughJPEGImages, ColorConversionStrategy and<br>
+ AutoFilterColorImages.<br>
+<br>
+ Because PassThroughJPEGImages is true, we don't set up a compression<br>
+ filter (we don't want to apply compression to a DCT compressed data<br>
+ stream). But ColorConversionStrategy is /sRGB, so we then turn off the<br>
+ PassThroughJPEGImages (we cannot change the colour model and still<br>
+ pass through the original data, obviously). Ordinarily the compression<br>
+ chooser would then select a compression based on the result, but<br>
+ AutoFilterColorImages is false, so the compression chooser is disabled.<br>
+<br>
+ The result is that we write uncompressed image data to the file.<br>
+<br>
+ By reordering the code so that we check the ColorConversionStrategy<br>
+ earlier we can turn off PassThroughJPEGImages before selecting the<br>
+ initial compression which means that this p[articular sequence of<br>
+ options will then work as expected.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-26 12:05: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=02e3169b57724f63ce01c994d39c20647be5c20b">02e3169b57724f63ce01c994d39c20647be5c20b</a>
+<blockquote>
+<p>
+ Bug 702192 Map text to black<br>
+<br>
+ Map all text to black. This is achieved by altering the<br>
+ color space to DeviceGray with a fill of black during<br>
+ gs_text_begin. When gs_text_release occurs, the color space<br>
+ is restored. This will only occur with the option -dBlackText<br>
+ and if the text is actually to be drawn.<br>
+<br>
+ When going to a raster device, the stroke and stroke fill of<br>
+ the text is handled with a stroke or stroke fill command.<br>
+ My original plan of storing the old color spaces and client<br>
+ color in the text enumerator will not work in this<br>
+ situation as it the enumerator will have already been<br>
+ destroyed when the stroke or stroke/fill command occurs.<br>
+ For this reason I store the old color space information<br>
+ for the current and alternate color spaces<br>
+ in the graphic state. The structure holding the information<br>
+ is garbage collected as it is holding objects that may be<br>
+ garbage collected. We also need to know if the target<br>
+ was a high level device like pdfwrite, as that device<br>
+ will handle the fill AND stroke, and we will need to restore<br>
+ the color space when we tear down the text enumerator.<br>
+<br>
+ gs_text_release needed to have the pgs added as a parameter<br>
+ to allow the possible release of the blacktext structure<br>
+ when the text is released from the other languages. This<br>
+ did not seem to be too big of an issue as gs_text_begin<br>
+ passes the pgs also. If the pgs is not available, NULL can<br>
+ be passed, and that is done in several locations.<br>
+<br>
+ A new special op was added to let us avoid doing the black<br>
+ text setting if we are constructing a soft mask. If we did not<br>
+ do this the mask could result in the loss of the text.<br>
+<br>
+ Finally, Type 3 fonts will NOT be affected by this process.<br>
+ Type 3 fonts are often used for actual graphic logos etc.<br>
+ Ken Sharp suggested we not have them affected by this setting.<br>
+ There were also issues with trying to do type 3 fonts in<br>
+ in that the PDF interpreter does some color space settings<br>
+ of its state when dealing with type 3 fonts and this put the<br>
+ interpreter's state out of sync with the graphic library state.<br>
+<br>
+ This was tested with a forced setting of black text enabled.<br>
+ No seg faults or errors occurred. There were obviously a lot<br>
+ of differences reported (over 33,000). All the images that were available<br>
+ to me with bmpcmp were gone through. Problems were found<br>
+ and addressed (the soft mask issue for example was found,<br>
+ as were issues with color spaces not getting properly restored).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-12 16:10:30 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1ff2ddac001612df3d54b504b49f6ee8e0685be7">1ff2ddac001612df3d54b504b49f6ee8e0685be7</a>
+<blockquote>
+<p>
+ PostScript interpreter - add a new IdiomSet for PPI 'ColorUtils'<br>
+<br>
+ Bug #702964 &quot;EPS file hangs with pdfwrite&quot;<br>
+<br>
+ This is not related to the hang, but to the remaining problem with this<br>
+ file and pdfwrite.<br>
+<br>
+ When using pdfwrite with PassThroughJPEGImages the output is incorrect.<br>
+ The reason is that the PostScript program processes the JPEG compressed<br>
+ data, turning a 4-component CMYK image into a single component gray<br>
+ image.<br>
+<br>
+ Obviously if we pass through the original CMYK data, but declare the<br>
+ image a DeviceGray the result is incorrect.<br>
+<br>
+ The only way to deal with this is to turn off the feature. There's no<br>
+ simple way to do this in pdfwrite (where we normally decide to turn it<br>
+ off, for downsampling etc) without disabling it for a number of other<br>
+ useful cases. So instead add a new IdiomSet which replaces part of the<br>
+ PPI ColorUtils ProcSet with a redefined procedure which turns off the<br>
+ PassThroughJEPGImages feature if the ProcSet forces Gray output.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-12 16:05:10 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=447d30a88cf38d623c9afa783ff0a16b98f9e4ff">447d30a88cf38d623c9afa783ff0a16b98f9e4ff</a>
+<blockquote>
+<p>
+ pdfwrite - Terminate pass-through images when we have read enough data<br>
+<br>
+ Bug #702964 &quot;EPS file hangs with pdfwrite&quot;<br>
+<br>
+ This is only a partial fix for the bug report, the remaining problem<br>
+ is addressed in a following commit.<br>
+<br>
+ The problem here is that the EPS file includes a ProcSet which processes<br>
+ the JPEG compressed data. It does so using a procedural DataSource for<br>
+ the image operator. Unfortunately the procedure fails to spot that<br>
+ readstring returns 0 bytes and identify this as en EOD. Instead it<br>
+ continues to try and read data, which continuously fails.<br>
+<br>
+ While the cause of the hang is in the PostScript program, it does not<br>
+ normally exhibit because the image operator ceases to read data from the<br>
+ DataSource when it has read enough samples to satisfy the declared<br>
+ Width/Height/BPC. An oversight in the pass-through code meant that the<br>
+ image operator wasn't properly terminating even when enough data had<br>
+ been supplied.<br>
+<br>
+ This commit correctly returns either 0 (require more data) or not-zero<br>
+ (enough data read) so that the operator terminates.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-12 13:18:16 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d4777d3bfa3fe17297d52eb318b4b93e1b0485b6">d4777d3bfa3fe17297d52eb318b4b93e1b0485b6</a>
+<blockquote>
+<p>
+ Update makefile for tesseract changes.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-12 08:10: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=965f842329e697a945a40ba1ff9a578612bf9f16">965f842329e697a945a40ba1ff9a578612bf9f16</a>
+<blockquote>
+<p>
+ Coverity ID 363024: Check gs_sprintf() retrn value<br>
+<br>
+ before we use it.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-07 14:14:37 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b2a7564bc80f61095e7dd3024f1ce51026366909">b2a7564bc80f61095e7dd3024f1ce51026366909</a>
+<blockquote>
+<p>
+ Add/remove paths to permit-file-read automatically for tesseract.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-07 11:50: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=1bbd20f2f099c63e5d325979e43182b617e9fb3a">1bbd20f2f099c63e5d325979e43182b617e9fb3a</a>
+<blockquote>
+<p>
+ Fix Tesseract build glitches.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-02 15:03: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=9666e6206135b637b7545f074a25969972662252">9666e6206135b637b7545f074a25969972662252</a>
+<blockquote>
+<p>
+ Squash a compiler warning (uninitialized variable)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-02 14:52:33 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5e85cde6eb20fc1f6ae13c69f80cc800cbacf164">5e85cde6eb20fc1f6ae13c69f80cc800cbacf164</a>
+<blockquote>
+<p>
+ &quot;Address&quot; subscript -1 is outside array bounds warning<br>
+<br>
+ There is no immediate prospect of resolving the underlying issue: that the<br>
+ stream code requires the data pointer in the &quot;cursor&quot; to be initialised to the<br>
+ address one byte *before* the beginning of the actual buffer.<br>
+<br>
+ We also do not want to disable the array bounds warning completely, as that<br>
+ risks missing real mistakes.<br>
+<br>
+ So, define a static inline function which does the offending pointer assignment,<br>
+ and disable the warning locally, for only that function. Then have everywhere<br>
+ that uses such a buffer setup call that function, rather than do the assignment<br>
+ itself.<br>
+<br>
+ At the moment, it is only disabled for gcc (and compatible) compilers, we can<br>
+ add others if/as required.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-01 16:06: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=fd902c6702ef81008d7c91b09a0723661c0f9201">fd902c6702ef81008d7c91b09a0723661c0f9201</a>
+<blockquote>
+<p>
+ oss-fuzz 23946: Move buffer bounds check to *before* using it!<br>
+<br>
+ ASCII85Decode filter: We correctly bounds check the buffer size, but dumbly<br>
+ were doing so *after* we'd used the relevant indices into the buffer. Change<br>
+ that order, and add another check.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-17 08:26: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=aaeccfffecee65225dabac32689a15a239d01681">aaeccfffecee65225dabac32689a15a239d01681</a>
+<blockquote>
+<p>
+ Change order of compiler options for third party libs<br>
+<br>
+ Move the compiler parameters around so the third party lib specific -I options<br>
+ come first - hopefully meaning we'll favor any included headers over those in<br>
+ the system include path(s).<br>
+<br>
+ This assumes the compiler searched include directives given on the command line<br>
+ left to right. Apparently this used to be a problem, I've not found a recent<br>
+ compiler that breaks that assumption (yet!).<br>
+<br>
+ This applies to: expat, freetype, ijs, jbig2dec, jpeg, jpegxr, openjpeg, png<br>
+ tiff and zlib<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-16 18:58:05 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=978df385c36ee4d65c9144924d0224243a5ebb71">978df385c36ee4d65c9144924d0224243a5ebb71</a>
+<blockquote>
+<p>
+ Added PDL_DYNAMIC_LDFLAGS to $host *bsd* section<br>
+<br>
+ to match the other platforms.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-16 18:49: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=477d315af46d9a7932108135137adc7aebfc77fe">477d315af46d9a7932108135137adc7aebfc77fe</a>
+<blockquote>
+<p>
+ Use pkg-config to get CFLAGS for libidn<br>
+<br>
+ We already get the libs, missing the CFLAGS (mainly the -I) was just an<br>
+ omission.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-28 12:54: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=c97c4ebb08474e1fbd9a3a6db71da52330f2d67b">c97c4ebb08474e1fbd9a3a6db71da52330f2d67b</a>
+<blockquote>
+<p>
+ Bring master up to date 9.53.x branch<br>
+<br>
+ Docs/dates/version for 9.53.3<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-01 10:18:33 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f7646980a69dc3b302b0640220347b9865f49d0e">f7646980a69dc3b302b0640220347b9865f49d0e</a>
+<blockquote>
+<p>
+ Fix preserving Line annotations without AP<br>
+<br>
+ This only affects the pdfwrite device.<br>
+<br>
+ It was rescaling the /L entry for no apparent reason, which meant the<br>
+ Line annotations rendered incorrectly when they had no AP.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-01 19:01: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=df537046c2130be285b213b5d0478159d1c5b16d">df537046c2130be285b213b5d0478159d1c5b16d</a>
+<blockquote>
+<p>
+ Initialise a variable to silence a compiler warning<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-01 18:01: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=dee305c09cb60af041c0cc0b301f5fa8347eccc2">dee305c09cb60af041c0cc0b301f5fa8347eccc2</a>
+<blockquote>
+<p>
+ Update makefiles for another version of nmake.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-01 09:15:37 -0700
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1039ade1c0e0066f03a22598edb327648f59d578">1039ade1c0e0066f03a22598edb327648f59d578</a>
+<blockquote>
+<p>
+ Squash a couple of compiler warnings.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-10-01 15:48:19 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=61e227ed7bcdddd652f32f14539702773fcbcf33">61e227ed7bcdddd652f32f14539702773fcbcf33</a>
+<blockquote>
+<p>
+ pdfimage devices - fix %Invocation and add /Info dictionary<br>
+<br>
+ I'd thought that we had missed off the %Invocation from the PDF output<br>
+ of the PDF image devices, but in fact it was only that the pdfocr<br>
+ devices had it emitted in a surprising place in the file.<br>
+<br>
+ That's fixed here just by moving when we write it so that its location<br>
+ is consistent between the devices.<br>
+<br>
+ Moved some definitions common to both pdfimage and pdfocr from the<br>
+ device's .c files to the pdfimage.h file.<br>
+<br>
+ Added emission of a very basic /Info dictionary. To facilitate future<br>
+ enhancements the number of 'static' (ie predefined) objects has been<br>
+ turned into a #define and we use that wherever possible instead of the<br>
+ previous hard-coded magic number. Because of the font objects required<br>
+ for pdfocr, and the fact that they refer to each other, these still<br>
+ don't use the #define and will have to be manually adjusted if we ever<br>
+ change this again.<br>
+<br>
+ Acrobat ignores the /Info dictionary, apparently it only reads the XML<br>
+ /Metadata values (at least in modern versions), so adding the Info<br>
+ dictionary doesn't help. Creating the XMP metadata is unfortunately<br>
+ quite complicated, we'd need to steal quite a bit of code from pdfwrite<br>
+ and at the moment I think its more trouble than its worth. I may change<br>
+ my mind in future.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-29 20:16: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=6290ce42ac84767a84ddc949c9348a194477ab9b">6290ce42ac84767a84ddc949c9348a194477ab9b</a>
+<blockquote>
+<p>
+ Bug 702948: Ensure initial bitmap cache sizes are properly aligned<br>
+<br>
+ Now that the allocations from the bitmap cache are aligned to the platform's<br>
+ required alignment, see commit:<br>
+<br>
+ 260c443bc14cdffa4d94e14c3a57e35bebee3a5b<br>
+<br>
+ We also want the initial size of the memory pool used by the cache to be<br>
+ &quot;aligned&quot;.<br>
+<br>
+ This is so that code that attempts to identify cache entries to evict by<br>
+ requesting a size equal to the entire size of cache memory pool doesn't get an<br>
+ unexpected failure, because we've rounded up that allocation request to a value<br>
+ larger than the entire size of the memory pool.<br>
+<br>
+ Because we don't expect an error to be possible at that point, a crash can<br>
+ occur.<br>
+<br>
+ Of the &quot;normal&quot; platforms we use, this only exhibits on Win32 because that is<br>
+ the only platform where the align_bitmap_mod we use is less than the<br>
+ obj_align_mod used for the memory managers.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-28 20:10:16 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c6f2518cd3331d7a64c79d533d525299683a57ac">c6f2518cd3331d7a64c79d533d525299683a57ac</a>
+<blockquote>
+<p>
+ Fix icc profile reference counting in transparency compositor<br>
+<br>
+ Found during Windows testing for a release.<br>
+<br>
+ The full test file for<br>
+ https://bugs.ghostscript.com/show_bug.cgi?id=693365<br>
+<br>
+ would cause Ghostscript to crash due to an ICC profile being freed whilst a<br>
+ reference was still being held for it. That was not counting up a reference<br>
+ count when restoring the device profile back to a previous value.<br>
+<br>
+ Fixing that introduced a leak for other profiles. And that turned out to be<br>
+ not decrementing the reference count when replacing a device profile.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-28 10:21: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=660af5758360293e5c041ebf4500144c54521fc8">660af5758360293e5c041ebf4500144c54521fc8</a>
+<blockquote>
+<p>
+ Work around for (I think) a VS2019 optimiser bug<br>
+<br>
+ VS2019 release builds crash with the input file from bug 702916 and several<br>
+ other files, in copied_glyph_slot() because the pointer retrieved and stored<br>
+ in *pslot is non-sensical.<br>
+<br>
+ Debug/Profile builds and optimised builds with earler VS versions don't show<br>
+ the problem.<br>
+<br>
+ Adding debug code to assign the calculated index to an interim unsigned integer<br>
+ variable also cause the problem to go away.<br>
+<br>
+ So, use that as a workaround.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-28 10:20: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=1a606b57f6eb9a38d355dcf8766f63be6140d42c">1a606b57f6eb9a38d355dcf8766f63be6140d42c</a>
+<blockquote>
+<p>
+ Fix some casting confusion for special glyph CID/index values<br>
+<br>
+ And a whitespace/indentation issue.<br>
+<br>
+ Noticed in passing....<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 10:28: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=aca94c29896f51198a98b1d3e831f7710295ee8c">aca94c29896f51198a98b1d3e831f7710295ee8c</a>
+<blockquote>
+<p>
+ First Page Last Page: Add strictly mono increasing error check<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-25 13:03:40 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0cec771833490249af508823914be8b7d6931fbe">0cec771833490249af508823914be8b7d6931fbe</a>
+<blockquote>
+<p>
+ Fix Bug 702941 - Mispelled PDF interpreter variable name.<br>
+<br>
+ s/RepiredAnError/RepairedAnError/ A simple typo that was missed because<br>
+ we did not have a test file with a format error to trigger this code.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-25 12:40: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=260c443bc14cdffa4d94e14c3a57e35bebee3a5b">260c443bc14cdffa4d94e14c3a57e35bebee3a5b</a>
+<blockquote>
+<p>
+ Bug 702938: Allocating cached glyphs, account for alignment<br>
+<br>
+ For efficiency, the glyph cache allocates &quot;large&quot; blocks of memory into which<br>
+ it parcels out offsets for individual glyph cache bitmaps, as required.<br>
+<br>
+ Since cached glyphs are usually fairly small, and potentially can be short<br>
+ lived, this saves the overheads of &quot;full&quot; memory for every cached glyph.<br>
+<br>
+ Unfortunately, in calculating the offsets for the cached glyph, it was failing<br>
+ to account for the required alignment of the system. In any environment that<br>
+ strictly enforces aligned memory accesses, this will potentially cause a bus<br>
+ error.<br>
+<br>
+ In this case, it was switching the gs_glyph type to a 64 bit type that triggered<br>
+ the issue. But any changed to the contents of the cached_char struct could have<br>
+ resulted in it happening.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 15:27:10 -0700
+</strong>
+<br>evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9e7fcb56612746fa93f8d76fa4cb8ecc72f43f30">9e7fcb56612746fa93f8d76fa4cb8ecc72f43f30</a>
+<blockquote>
+<p>
+ Squashed commit of the java-demo branch:<br>
+<br>
+ commit 385a750c39e3112f4b640f8dbfea28fbad9885a2<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sun Sep 13 14:42:08 2020 -0700<br>
+<br>
+ Added several devices, updated documentation, and README.txt.<br>
+<br>
+ commit 64fad0d5035ccf7394c1863e369b108ca471b5fb<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Sep 9 15:30:58 2020 -0700<br>
+<br>
+ Worked on PDFPostscriptDeviceFamily implementation<br>
+<br>
+ Added all of the parameter types specified in<br>
+ https://ghostscript.com/doc/current/VectorDevices.htm for<br>
+ PDF/Postscript devices.<br>
+<br>
+ Added several devices, updated documentation, and README.txt.<br>
+<br>
+ commit fc6593654f7d1e114d8fd0a8b2da89224e193c92<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Sep 9 14:19:25 2020 -0700<br>
+<br>
+ Added missing Settings class to viewer<br>
+<br>
+ commit ea92fe4f172911dfe79e8423bd7b98d14d585393<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Sep 9 14:19:25 2020 -0700<br>
+<br>
+ Added missing Settings class to viewer<br>
+<br>
+ commit 792ddf8525e903e55bf668b41b84f002ef4757cb<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sat Sep 5 14:04:44 2020 -0700<br>
+<br>
+ Added more implementations of Device class<br>
+<br>
+ commit 4f2056eafb633f5e4aa9f6ac3bed99247110f556<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sun Aug 30 16:11:20 2020 -0700<br>
+<br>
+ Added device classes to allow easy device manipulation<br>
+<br>
+ New abstract classes Device and FileDevice and several subclasses<br>
+ to allow easy modification and output to devices.<br>
+<br>
+ commit ea360f254e7638b37529b8db105f0a2b9b7e722f<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Mon Aug 24 21:16:56 2020 -0700<br>
+<br>
+ Updated to newer Ghostscript version and fixed a bug<br>
+<br>
+ Updated to the newest Ghostscript version and fixed an<br>
+ ArrayIndexOutOfBoundsException bug when unloading zoomed pages.<br>
+<br>
+ commit 34c47909939b4e85f18e2fc03088203c51bba292<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sun Aug 23 15:58:44 2020 -0700<br>
+<br>
+ Added better documentation<br>
+<br>
+ commit eda31b70496337caefd0dc912c5a0850de769147<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Thu Aug 20 14:36:48 2020 -0700<br>
+<br>
+ Updated how zooming is handled<br>
+<br>
+ Zooming is now done through the SmartLoader and is no longer<br>
+ a separate operation. Fixed an issue when the SmartLoader could<br>
+ become out of date due to the condition variable being signaled<br>
+ before the SmartLoader had finished.<br>
+<br>
+ commit 5b08d9eadfe64d87cf26869c47a2a5f78755dd4b<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Aug 19 17:38:34 2020 -0700<br>
+<br>
+ Implemented distilling documents<br>
+<br>
+ Users now have the option to distill a document if the desired<br>
+ input is not a PDF.<br>
+<br>
+ commit 4a78a968777521f23fefaeb277d378b9dc08b555<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Tue Aug 18 15:04:09 2020 -0700<br>
+<br>
+ Fixed zooming and some other bugs in the viewer<br>
+<br>
+ Zooming in on documents in the viewer no longer causes a crash.<br>
+ Fixed a bug where documents would not display after being loaded.<br>
+ Fixed a bug where closing a document when none was loaded would<br>
+ crash.<br>
+ Fixed a bug where gsapi_delete_instance would cause a crash.<br>
+<br>
+ commit 9c9190192c1acdafbf4e9f277dba9e2079046cc7<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sun Aug 16 16:28:44 2020 -0700<br>
+<br>
+ Fixed JNI bugs and began updating viewer to use one GS instance<br>
+<br>
+ Fixed JNI crashes when Ghostscript calls were made from different<br>
+ threads. Migrated loading low res and high res images from using<br>
+ multiple instances to using one global instance.<br>
+<br>
+ commit fbe9a961e7fef31c79cfd8ed857643ad00798af8<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sat Aug 15 14:36:34 2020 -0700<br>
+<br>
+ Added init_with_args to the test code in Main.java<br>
+<br>
+ commit 96ede7306ce8d71be3016e7d708c801c5718fdfe<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sat Aug 15 14:33:40 2020 -0700<br>
+<br>
+ Fixed a small error in test code in Main.java<br>
+<br>
+ commit dcb1141da6901f0c42336861428cf13f6cc9b202<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sat Aug 15 14:13:23 2020 -0700<br>
+<br>
+ Finished updating to newer Ghostscript functions<br>
+<br>
+ Replaced all Reference objects in Ghostcript calls in Java<br>
+ and JNI to Reference&lt;T&gt;. Iteration over parameters now must be<br>
+ done through GSInstance instead of creating an explicit iterator.<br>
+<br>
+ commit aa9288fa60aa6030b88f909ac494b388737e1748<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Thu Aug 13 16:00:51 2020 -0700<br>
+<br>
+ Finished implementing the rest of Ghostscript functions in Java<br>
+<br>
+ All GS functions are now able to be called through GSAPI. Fixed<br>
+ a possible memory leak related to exception checking in C++.<br>
+<br>
+ commit b02df334fdbc14fb1ed4d75bcaddcf7091391ee7<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Thu Aug 13 12:49:33 2020 -0700<br>
+<br>
+ Got gsapi_enumerate_params working in Java<br>
+<br>
+ Got gsapi_enumerate_params working and added a utility class<br>
+ to do the same work as gsapi_enumerate_params with a Java<br>
+ iterator.<br>
+<br>
+ commit 502baba9568406ce923944f693728af30c81473e<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Aug 12 16:25:54 2020 -0700<br>
+<br>
+ Got gsapi_set_param working<br>
+<br>
+ Renamed java function to gsapi_set_param_once to distinguish from<br>
+ the actual Ghostscript call. This method does the call to<br>
+ gsapi_set_param twice in native code and is used to make it easier<br>
+ to use the function in Java.<br>
+<br>
+ commit 614c55f1989d04178c916db56cfc38753918097e<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Aug 12 13:30:07 2020 -0700<br>
+<br>
+ Worked on implementing new Ghoscript methods in Java<br>
+<br>
+ Wrote out all native method signatures in Java and C++. Workekd<br>
+ on gsapi_add_control_path and associated helper methods.<br>
+<br>
+ commit 08cd824e589cf9cdd4848b9b3606898ac7141c9f<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Tue Aug 11 16:32:08 2020 -0700<br>
+<br>
+ Worked on improving References in C++ code<br>
+<br>
+ commit de7f2303372bed8b19ca401392151cba7f2ab013<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Tue Aug 11 13:58:54 2020 -0700<br>
+<br>
+ Progress on updating Java bindings to newest version.<br>
+<br>
+ Added some of the new methods, but currently none work.<br>
+<br>
+ commit bcf2db77c8c106b1b3d80d647b0fe04201d9c645<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Mon Aug 10 14:08:42 2020 -0700<br>
+<br>
+ Fixed some errors related to loading pages too fast<br>
+<br>
+ An error would occasionally be thrown in the SmartLoader having to<br>
+ do with the Document being modified while in the SmartLoader, causing<br>
+ an error. Reconfigured how the SmartLoader handles documents and<br>
+ is started and stopped.<br>
+<br>
+ commit cb2be4f3b0635efd4616f567389b19a7351d078b<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Mon Aug 3 15:41:20 2020 -0700<br>
+<br>
+ Added thread safety to the viewer.<br>
+<br>
+ The viewer now ensures that no more than one ghostscript call is<br>
+ happening at the same time and has multiple options for controlling<br>
+ the behavior if multiple operations are attempting to be called.<br>
+ Also began work on a utility class to make Ghostscript calls easier<br>
+ by having a class carry around a instance and a caller handle.<br>
+<br>
+ commit f81dfc177f71d0d12b38371fae54b45e158833ce<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sat Aug 1 17:16:43 2020 -0700<br>
+<br>
+ Progress on improving concurrency<br>
+<br>
+ Added better exception handling. Began progress on handling<br>
+ concurrent operations better.<br>
+<br>
+ commit e0f4af0e59580dabca01cb9b932185475d4032a8<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sat Aug 1 14:48:37 2020 -0700<br>
+<br>
+ Viewer now will load a higher resolution image on zoom.<br>
+<br>
+ The high resolution image loads correctly, but the viewer does<br>
+ not correctly load the right page when in a zoom other than 1x.<br>
+<br>
+ commit 843914f25b1a58841bac94e5df8cded8b47dd948<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Jul 29 15:40:14 2020 -0700<br>
+<br>
+ Optimizations to page loader<br>
+<br>
+ Page loader now only loads around where the use is viewing and<br>
+ does not load pages unless the user actually navigates to those<br>
+ pages.<br>
+<br>
+ commit 458f93f005920b9ca58bed67178dba26cd6d8a18<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Jul 29 14:13:44 2020 -0700<br>
+<br>
+ Progress on viewer<br>
+<br>
+ Optimizations and easier user interface as well as basic zooming<br>
+ implemented.<br>
+<br>
+ commit ab65f0672d2be5f5c312b229af66d8d028661d08<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Mon Jul 27 15:12:45 2020 -0700<br>
+<br>
+ Various bug fixes in viewer<br>
+<br>
+ Added utility methods in ViewerWindow.java to help with changing<br>
+ pages and zoom levels. Added framework for zooming pages.<br>
+<br>
+ commit e3e7dbac2b5b271a4d4225ebae34d36f603b8a07<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Fri Jul 24 14:03:54 2020 -0700<br>
+<br>
+ Got viewer working<br>
+<br>
+ Viewer now works and can open files. Still does not &quot;smartly&quot;<br>
+ target pages which the use is directly viewing or take<br>
+ advantage of file-specific properties. It instead loads all<br>
+ the pages' high-resolution images in order.<br>
+<br>
+ commit f1441ed36302f75d94cf4aa4a8047150bf5b7585<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Thu Jul 23 18:57:52 2020 -0700<br>
+<br>
+ Basic viewer working<br>
+<br>
+ The viewer has basic capabilities, but still lacks loading<br>
+ high resolution images, spacing components, and resizing correctly.<br>
+<br>
+ commit ea3eecbc30b1a4a4747dfd2818262c2f6eea112c<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Thu Jul 23 16:13:13 2020 -0700<br>
+<br>
+ Worked on creating GUI<br>
+<br>
+ Added GUI (generated using NetBeans). Added support for callbacks<br>
+ into the GUI specifically related to the wanted viewer operations.<br>
+<br>
+ commit cb15f051db01135cf1eef8df6a8cfb53cb5ff840<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Jul 22 16:24:13 2020 -0700<br>
+<br>
+ Progress on Document class for handling a documentLoader<br>
+<br>
+ Document class is a list of Pages which stores a low-resolution image<br>
+ and a high-resolution image. The low-resolution image should always<br>
+ be loaded while the high-resolution can be unloaded to save memory<br>
+ usage.<br>
+<br>
+ commit 99fa4ae3667cd58d6f2a72f01d1b9410929f4847<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Tue Jul 21 15:19:10 2020 -0700<br>
+<br>
+ Converted original Java project to be used as a JAR library<br>
+<br>
+ The original project should be compiled as a JAR library and<br>
+ where needed, should be placed alongside the required native<br>
+ libraries to run. The executable Java project has been moved<br>
+ to the gsviewer project.<br>
+<br>
+ commit 80dd426da705c160b79a57a161c5d95c3a57aca6<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Tue Jul 21 15:01:18 2020 -0700<br>
+<br>
+ Colors now being displayed correctly after getting image<br>
+<br>
+ Fixed drawing colors coming from ghostscript. Next: need to migrate<br>
+ the current project into a jar file instead of a runnable application.<br>
+ The viewer will use the Java library.<br>
+<br>
+ commit 06a50542391c3f0ad64f20a0ae6a1f63d9aa61e0<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Mon Jul 20 17:10:36 2020 -0700<br>
+<br>
+ Fixes to display callback and C++ and added window to display images<br>
+<br>
+ Fixed Java methods not being found in C++ and added a window class<br>
+ to start displaying images.<br>
+<br>
+ commit 4b0e69075619f7c4ef8df850d0e85d125e2b67da<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Fri Jul 17 16:02:37 2020 -0700<br>
+<br>
+ Implemented NativePointer methods in C++ and updated onDisplayPage<br>
+<br>
+ onDisplayPage now uses a BytePointer object for the pimage parameter<br>
+ to interface into native memory.<br>
+<br>
+ commit 0d24844082f6c566af417ad35b394e3fd591c38e<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Fri Jul 17 15:03:06 2020 -0700<br>
+<br>
+ Added new Java class allowing native access to memory blocks<br>
+<br>
+ Added NativePointer and NativeArray as two base classes for low-level<br>
+ memory-access alongside other classes to assist with this.<br>
+<br>
+ commit 9643091f698293181dcb484e04e96d19df12950a<br>
+ Author: Ethan Vrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Thu Jul 16 17:01:53 2020 -0700<br>
+<br>
+ Security improvements in native code<br>
+<br>
+ Fixed multiple points where the program could crash<br>
+ and instead returned NULL and/or threw a (safer) Java<br>
+ exception.<br>
+<br>
+ commit fdade3eedc6469edd3da510bd648a39fdb9f9a93<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Tue Jul 14 15:52:22 2020 -0700<br>
+<br>
+ Fixed how display_callback was being passed to Ghostscript<br>
+<br>
+ The display_callback device did not have the correct values regarding its size,<br>
+ major version, and minor version. Furthermore, the display_device structure<br>
+ was not being dynamically allocated and ended up being freed too early.<br>
+<br>
+ commit 5a3e822ca0e076708bed843a2578a18eebb37f3d<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sun Jul 12 15:17:16 2020 -0700<br>
+<br>
+ Fixed some bugs related to stdio<br>
+<br>
+ Fixed stdio bugs and added some more utility methods to make calling<br>
+ ghostscript functions easier in Java.<br>
+<br>
+ commit 88fad771fcd4024a538f4bf6f6819d62d8180440<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Sat Jul 11 14:29:58 2020 -0700<br>
+<br>
+ Completed JNI bindings to Ghostscript<br>
+<br>
+ Added implementations for StdIO and display callback, and added<br>
+ some testing in main().<br>
+<br>
+ commit bb197f9ae65b39bf55ae6fd932203e514472ff8f<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Fri Jul 10 14:06:07 2020 -0700<br>
+<br>
+ Finished writing JNI bindings.<br>
+<br>
+ Finished writing JNI bindings and added more utility methods to<br>
+ help with setting Reference objects in Java.<br>
+<br>
+ commit 8a0074ea3624921cd8ff98684e5efa2fc0b4d5ce<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Thu Jul 9 18:27:52 2020 -0700<br>
+<br>
+ Progress on linking Ghostscript functions to Java<br>
+<br>
+ Added support for more functions and finished implementing display<br>
+ callback functions.<br>
+<br>
+ commit 32fee0e8ea1d82897ff4d2a3ce4b9ba92a680cd3<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Wed Jul 8 19:39:27 2020 -0700<br>
+<br>
+ Worked on implementing display_callback in Java<br>
+<br>
+ Added utility methods in C++ code to help with calling functions,<br>
+ setting fields, and creating objects. Started to implement the functions<br>
+ defined in display_callback.<br>
+<br>
+ commit fe751db5f899c3e59c961d65ec013f307adef8f9<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Tue Jul 7 17:31:18 2020 -0700<br>
+<br>
+ Implemented Ghostscript functions in Java in the C++ project<br>
+<br>
+ Created a new C++ project which allows for Java calls into Ghostscript.<br>
+ Current working functions are gsapi_revision, gsapi_new_instance, and gsapi_delete_instance.<br>
+ gsapi_set_stdio_with_handle and gsapi_set_stdio are untested.<br>
+<br>
+ commit 4c2bf73539f440bf8f6b45d85820cc84df2e6b28<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Tue Jul 7 14:52:47 2020 -0700<br>
+<br>
+ Finished writing ghostscript api signatures in GSAPI.java<br>
+<br>
+ commit 4850223d252d6e245104c42fafc0190b91177be2<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Mon Jul 6 18:16:15 2020 -0700<br>
+<br>
+ Progress on creating the JNI bindings to Ghostscript.<br>
+<br>
+ Started GSAPI class to store exported Ghostscript functions. Added error constants and declared<br>
+ gsapi_revision, gsapi_new_instance, gsapi_delete_instance, gsapi_set_stdio_with_handle,<br>
+ gsapi_set_stdio, gsapi_set_poll_with_handle, gsapi_set_poll, and gsapi_set_display_callback bindings.<br>
+ Added multiple callback interfaces and a Java representation of struct display_callback_s.<br>
+<br>
+ commit 8da16a603b124c15ce4dc7c7fccc97f711d75fb2<br>
+ Author: evrhel &lt;ethanvrhel@gmail.com&gt;<br>
+ Date: Mon Jul 6 15:18:32 2020 -0700<br>
+<br>
+ Java demo: Initial commit with README<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 12:34:18 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f9c59a2875e4a5cd2b2160cfc507966795e0787">4f9c59a2875e4a5cd2b2160cfc507966795e0787</a>
+<blockquote>
+<p>
+ Fix error in token parsing in pdfwrite<br>
+<br>
+ I am trying to use a hex string &lt;XXXXXXXX&gt; in pdfi.<br>
+ The code had a bug in it (probably because the ps code never generates<br>
+ a hex string?) that was incrementing the token to be 1 longer than it<br>
+ should have been. Logic was just mangled.<br>
+<br>
+ I also simplified it to to take out the goto, which was egregious in<br>
+ this case. Just put in two lines of code where it belongs, instead of<br>
+ a goto to those two lines of code... (really?)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 19:08: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=82aceb33f2521854bc781bdf0f47cbfe32d6ece8">82aceb33f2521854bc781bdf0f47cbfe32d6ece8</a>
+<blockquote>
+<p>
+ Remove links to ghostscript.com/release_history.html<br>
+<br>
+ That page is now gone.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 17:10:21 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=921f2737a72e64d9c8113fc9418422ab185cb60f">921f2737a72e64d9c8113fc9418422ab185cb60f</a>
+<blockquote>
+<p>
+ Remove dead end links from Readme.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 16:59:20 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e36e62c0631f73627ff3caec5752eefe37a14948">e36e62c0631f73627ff3caec5752eefe37a14948</a>
+<blockquote>
+<p>
+ Allow configure caller to choose a sanitizer<br>
+<br>
+ Our &quot;sanitize&quot; target just uses address sanitizer.<br>
+<br>
+ With this commit, we'll still default to address, but the caller can do:<br>
+ --with-santizer=memory<br>
+<br>
+ to opt for the &quot;memory&quot; sanitizer instead.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 10:00:39 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c210bb3d2a0c6131ebeedc44c1d8cc6fc92fb08f">c210bb3d2a0c6131ebeedc44c1d8cc6fc92fb08f</a>
+<blockquote>
+<p>
+ Fix compiler warnings<br>
+<br>
+ (unused variables)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-23 20:20: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=d7d05e0ef54662054e038b421795e6e7dedd1e4a">d7d05e0ef54662054e038b421795e6e7dedd1e4a</a>
+<blockquote>
+<p>
+ Bug 702920: Fix type confusion in new param type code.<br>
+<br>
+ In a few cases we were using the wrong element in the union to read the<br>
+ value back from the param list (and to range check the values).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 08:19: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=038df4baf368196942cd32aedcd29e4916a190c8">038df4baf368196942cd32aedcd29e4916a190c8</a>
+<blockquote>
+<p>
+ WhatIsGS.htm updates from Lisa F<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-23 17:12:54 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d178fa10548d101a248e3ec3fc6ddcf5bf044692">d178fa10548d101a248e3ec3fc6ddcf5bf044692</a>
+<blockquote>
+<p>
+ XPS Interp: Fix missing initialization in XPS page reversal<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-23 14:18: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=b53045b45866fe5b41e9ca6b4fe8318f14178d3d">b53045b45866fe5b41e9ca6b4fe8318f14178d3d</a>
+<blockquote>
+<p>
+ Fix a compiler warning<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-23 13:14: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=6a1f7167cf45d23c4e1faec3ef37fb4b9e5d7a53">6a1f7167cf45d23c4e1faec3ef37fb4b9e5d7a53</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak with annotations<br>
+<br>
+ Annotations are somewhat odd and don't quite fit the scheme of other<br>
+ cos objects. Each annotation is created as a dictionary, which is<br>
+ stored in the Annots array (also a cos object)) of the page.<br>
+<br>
+ But we write the annots out to the file immediately, and free the<br>
+ dictionary contents at that time. We cannot, however, free the dict<br>
+ cos object, because we need the object number to write the Annots<br>
+ array in the page dictionary, which we only do when writing the page<br>
+ dictionary.<br>
+<br>
+ So at the end of the page the annots array contains a number of empty<br>
+ dictionaries. We free the array, which would free the dictionary<br>
+ contents (except there are none) but it does *not* free the dictionaries<br>
+ because they have an ID......<br>
+<br>
+ So when we free the Annots array, we first need to set the ID of each<br>
+ of the dictionary objects it contains to 0, so that the dictionary<br>
+ will also be freed.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-22 10:31:09 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5ff586fa9e51ac7fdb306ff7b616d7cf23ed754d">5ff586fa9e51ac7fdb306ff7b616d7cf23ed754d</a>
+<blockquote>
+<p>
+ Fix PolyLine annotation for pdfwrite device<br>
+<br>
+ This implementation was missing, just copy-pasted the default for it.<br>
+<br>
+ It was going through a code path that I think only works for Widgets.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-26 16:53:36 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9bfaeeace268f6a59f325e12efab9fb8273f64e0">9bfaeeace268f6a59f325e12efab9fb8273f64e0</a>
+<blockquote>
+<p>
+ XPS interpreter: Have interpreter handle page range processing<br>
+<br>
+ This has the obvious benefit that the interpreter will skip processing<br>
+ pages except those that lie in the FirstPage LastPage range.<br>
+ If the PageList is used, the XPS interpreter will create a new<br>
+ list of linked pages to process. The XPS interpreter handles all<br>
+ the PageList cases currently implemented by the PDF interpreter<br>
+ including even and odd. In addition, the XPS interpreter will handle<br>
+ backward indexing (e.g. 100-1), as well as starting from last page<br>
+ to another page (e.g. -2 which means from last page to second page),<br>
+ and page repeats (e.g. 1,2,1,2,1,2 or 1-3,3-1 or 1-,-1 which is<br>
+ do page 1 to end and end to page 1) Also, setting -dFirstPage=4<br>
+ -dLastPage=1 will create pages 4,3,2,1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-16 17:33: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=c4e79952b42ebccb669063e053e3d7ce0f88cc22">c4e79952b42ebccb669063e053e3d7ce0f88cc22</a>
+<blockquote>
+<p>
+ Fix compile failure due to missing header.<br>
+<br>
+ A user reported (privately) that a pre-release of an upcoming XCode release<br>
+ fails to compile due to a missing prototype/declation of abs() in the jpegxr<br>
+ code. It's clearly a simple omission, as several files use abs() and do include<br>
+ the relevant header.<br>
+<br>
+ So adding it here.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-22 11:18: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=71bbd0f12f48e1300a1e768483b5999099243f8d">71bbd0f12f48e1300a1e768483b5999099243f8d</a>
+<blockquote>
+<p>
+ Bug 702810: fix fapi buffer size parameter types<br>
+<br>
+ The buffer size parameters for the fapi callbacks used to be unsigned short,<br>
+ but were changed to ints a while back. The calls for the (g)subr data in<br>
+ Type 2/CFF fonts hadn't had the casts to ushort removed, causing the values<br>
+ to be trucated.<br>
+<br>
+ There was also a Postscript/FAPI internal function that had not had the<br>
+ buffer length parameter changed to int.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-22 11:11: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=a5aa22546b191b9465b2d6f6aa00c2ad591238af">a5aa22546b191b9465b2d6f6aa00c2ad591238af</a>
+<blockquote>
+<p>
+ Remove pointless 'recopying' of CFF (g)subr strings<br>
+<br>
+ For some reason, the Type 2 font serialisation (used for reassembling font<br>
+ streams to pass to freetype) was using the FAPI callback to read the<br>
+ (g)subr string data into it's main buffer, but then called the writing<br>
+ function to write data to the buffer, using its own buffer as input -<br>
+ effectively overwriting the bytes with the same bytes.<br>
+<br>
+ The only purpose (it seems) was to move the current stream position forward by<br>
+ the appropriate amount.<br>
+<br>
+ Change it so we simply move the &quot;current position&quot; pointer on by the correct<br>
+ offset.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-22 08:58:31 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3abfca2a925427962ed644872057f75c44afc0d8">3abfca2a925427962ed644872057f75c44afc0d8</a>
+<blockquote>
+<p>
+ Fix memory leak in pcl pdfmark implementation<br>
+<br>
+ The memory allocated by param_write_string_array() was never being<br>
+ released.<br>
+<br>
+ (Note: the cluster doesn't test this code path currently)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-22 15:43: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=652c71e0f7766f3696330f654abf01c79a5493f2">652c71e0f7766f3696330f654abf01c79a5493f2</a>
+<blockquote>
+<p>
+ Updates to 'WhatIsGS.htm' document from Lisa.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-22 08:25:36 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b7a413e2d28540ca0113af1c783532ecea6f6ba0">b7a413e2d28540ca0113af1c783532ecea6f6ba0</a>
+<blockquote>
+<p>
+ pdfwrite - remove erroneous free from cos_dict_put_copy<br>
+<br>
+ Nancy discovered this one while working on annotations for pdfi. The<br>
+ code here would attempt to free the memory pointing to the key name<br>
+ which is passed as an argument to the function, if the *dictionary*<br>
+ properties were set to free dictionary keys.<br>
+<br>
+ Obviously the function argument is not the same thing as the key stored<br>
+ in the dictionary, so even at first inspection this looks incorrect.<br>
+<br>
+ The key is supplied (much higher up) from a param list, because the pdfi<br>
+ code uses C param lists, where the data is stored in a single large<br>
+ allocation, it is not possible to free an individual key and causes a<br>
+ crash.<br>
+<br>
+ Ghostscript gets away with this for two reasons; firstly it uses a<br>
+ stack param list (which is basically a ref param list) where each key<br>
+ is stored in its own allocation. Secondly the key is not actually<br>
+ allocated, its an entry in the interpreter name table. So when the<br>
+ code in cos_dict_put_copy 'frees' the memory, nothing actually happens,<br>
+ the memory manager just notes that the memory is unused now. This<br>
+ avoids double freeing the memory which would otherwise happen.<br>
+<br>
+ So essentially this code is wrong, and we've been getting away with by<br>
+ sheer luck for decades.<br>
+<br>
+ I tested the modification extensively, including memory leak checks with<br>
+ many files run through pdfwrite and can find no problems with simply<br>
+ removing the line of code.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-21 22:16: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=bbd106e8f9345296cb5b5a452487bda603d54173">bbd106e8f9345296cb5b5a452487bda603d54173</a>
+<blockquote>
+<p>
+ oss-fuzz 23637: Fix error code confusion<br>
+<br>
+ Confusion of error codes meant we were allocating space for glyph data,<br>
+ but never copying the data into it. Thus the memory sanitizer error.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-21 15:14: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=42480ab92d9d31e7dc204e8f916165cc02480387">42480ab92d9d31e7dc204e8f916165cc02480387</a>
+<blockquote>
+<p>
+ Fix segfaults in UFST - use correct font name<br>
+<br>
+ Omission from commit: a10a03a4c9713b38c4cfcd07f0ba3c722778aae0<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-20 16:35: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=7aff7d6a30544929de9d2f4bd775fb17303b86ff">7aff7d6a30544929de9d2f4bd775fb17303b86ff</a>
+<blockquote>
+<p>
+ Fix Coverity ID 362083 &amp; 362084<br>
+<br>
+ After the fixes for crashes with invalid filenames, Coverity can now<br>
+ detect a potential NULL stream pointer (would have been uninitialised<br>
+ previously).<br>
+<br>
+ Prevent the code trying to write to that stream, thereby dereferencing<br>
+ it.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-18 23:18: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=ef118c5edc71ac6575260918d062e91ed3f8f067">ef118c5edc71ac6575260918d062e91ed3f8f067</a>
+<blockquote>
+<p>
+ XPSWrite: Fix memory leaks and page resource relations<br>
+<br>
+ The page resource relations information tells which of the<br>
+ resources are used for each page. The information was not<br>
+ getting written out correctly for the multi-page case. The<br>
+ Microsoft viewer is very fussy about this and would not<br>
+ display some pages, even though the item is in the resources.<br>
+<br>
+ Made sure that each page writes out the proper relations to the<br>
+ resources and that no duplicate relations are written.<br>
+<br>
+ Also fixed memory leaks from the zip file information not getting<br>
+ freed as well as some TIFF client information.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-18 15:53: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=4dcbbd26d92a25705a1b835573faada8aa225448">4dcbbd26d92a25705a1b835573faada8aa225448</a>
+<blockquote>
+<p>
+ Fix a compiler warning by initialising a variable<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-18 15:16:46 +0100
+</strong>
+<br>Peter Cherepanov &lt;sphinx.pinastri@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5425a7f56d0cb424370af82f18c3416a728f18ff">5425a7f56d0cb424370af82f18c3416a728f18ff</a>
+<blockquote>
+<p>
+ PDF interpreter &amp; pdfwrite - better detection of per-page output<br>
+<br>
+ Bug #702791 &quot;%d vs. %03d and pdfmark destination page ... points beyond the last ...&quot;<br>
+<br>
+ The PostScript code in the PDF interpreter which looks for<br>
+ file-per-page output, in order to drop Outlines and Dests was<br>
+ only checking for %d not variants liek %03d. This could lead<br>
+ to warnings about the Destination being dropped.<br>
+<br>
+ The code provided by Peter checks for an odd number of '%'<br>
+ characters instead. This isn't the same test as pdfwrite uses<br>
+ but that is in C and not immediately available in PostScript.<br>
+<br>
+ Since we plan eventually to drop the PostScript implementation<br>
+ of the PDF interpreter and move to a C version, this is fine<br>
+ for the interim.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-18 14:17:00 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4c58ce8f26096122eff7783da38a679a3ecd96c4">4c58ce8f26096122eff7783da38a679a3ecd96c4</a>
+<blockquote>
+<p>
+ pdfwrite - fix a number of seg faults when opening output file fails<br>
+<br>
+ While investigating bug #702791 I discovered a number of ways to make<br>
+ the opening of the output file fail (combinations of illegal characters)<br>
+ which subsequently caused pdfwrite to seg fault.<br>
+<br>
+ This commit addresses these.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-17 16:37: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=cf49e978b9324866f61acce6b3cf399b356af6fb">cf49e978b9324866f61acce6b3cf399b356af6fb</a>
+<blockquote>
+<p>
+ Fix tesseract traineddata links in documentation.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-17 15:34:02 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d5494de2cab28b91ba360d15b8afffef50a3f421">d5494de2cab28b91ba360d15b8afffef50a3f421</a>
+<blockquote>
+<p>
+ PDF interpreter with pdfwrite fix non-square scaling stroked text<br>
+<br>
+ Bug #702900 &quot;pdfwrite device causes bold text output&quot;<br>
+<br>
+ The PDF interpreter has special code for dealing with line widths and<br>
+ stroked text, this is because we do not preserve the CTM in the input<br>
+ through to the output in pdfwrite.<br>
+<br>
+ What we need to do is figure out what line width with an identity CTM<br>
+ would draw a line the same width as the current line width and CTM.<br>
+ Normally pdfwrite takes care of this itself, but until relatively<br>
+ recently it did not have access to the textmatrix, only the CTM. But for<br>
+ text, by the time we get to the point of emitting the text,, the CTM<br>
+ already includes the Text matrix (Tm).<br>
+<br>
+ So the PDF interpreter (which does have the CTM before the TM is<br>
+ applied) calculates a line width and sets that before sending the text.<br>
+<br>
+ However, when the scaling was non-square we were not doing that, leading<br>
+ pdfwrite to emit the unscaled linewidth. Intriguingly we have no files<br>
+ in the test suite for which this is a problem, all the files where the<br>
+ CTM is non-square it is also close to the identity so not visibly<br>
+ incorrect.<br>
+<br>
+ The file here, however, has a non-identity CTM which is slightly<br>
+ non-square when the text is rendered, and very far from the identity.<br>
+<br>
+ Since we can't tell which scaling to use for the linewidth we 'fudge'<br>
+ it by using the transformed x and y values of the linewidth, as two<br>
+ sides of a triangle, then calculating the hypotenuse. Obviously this<br>
+ won't work for seriously skewed matrices but it seems unlikely we<br>
+ could calculate a reasonable linewidth for that anyway.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-26 16:50:51 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b81a73c34e48a547dd881f07aa046646a472e13c">b81a73c34e48a547dd881f07aa046646a472e13c</a>
+<blockquote>
+<p>
+ C# API: Fix a few minor issues related to printing<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-16 10:05: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=c035cc51926dbda7f013b7611d0cdddda986a47d">c035cc51926dbda7f013b7611d0cdddda986a47d</a>
+<blockquote>
+<p>
+ Clarify documentation<br>
+<br>
+ It wasn't clear that the PJL implementation of pdfmark and<br>
+ setdistillerparams required the PJL line to terminate with a linefeed<br>
+ (specifically a linefeed, not a carriage return). Update the document<br>
+ to make this clear.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-16 07:48: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=d9369a388ae987b63d66fdd557f95b0073547846">d9369a388ae987b63d66fdd557f95b0073547846</a>
+<blockquote>
+<p>
+ Bug 702904: Another fix to check for shared libjpeg/libtiff<br>
+<br>
+ We cannot combine shared and not shared libjpeg and libtiff - they either both<br>
+ need to be &quot;local&quot; or both shared, and configure checks that and fails when<br>
+ the two are incompatible.<br>
+<br>
+ However, that check would fail when either libjpeg or libtiff were not being<br>
+ included at all. Since it is libtiff that is the &quot;problem&quot; for this<br>
+ compatibility, now check if TIFF is included, and if not, skip the check.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-25 16:47:10 +0100
+</strong>
+<br>ChrisL &lt;cliddell@salvor-openbsd.lan&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=24808eae80f0def1aeb7f727980d5e0852d3d0e0">24808eae80f0def1aeb7f727980d5e0852d3d0e0</a>
+<blockquote>
+<p>
+ Fix the OpenBSD build<br>
+<br>
+ Whilst hopefully not breaking the buildroot build.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-14 16:52: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=7d08c3225879c0714217a7defd6f57f8a16ef615">7d08c3225879c0714217a7defd6f57f8a16ef615</a>
+<blockquote>
+<p>
+ Bug 702901: initialize directory for tiff configure<br>
+<br>
+ Previously the directory in which to run the libtiff configure script was<br>
+ initialised to an empty string, but that, in some toolchains, resulted in an<br>
+ error due to &quot;unsafe header/library path used in cross-compilation&quot;.<br>
+<br>
+ So initialise it something benign instead.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-14 11:12:16 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=996d05b6f5010afda4b47b20ed4b8e1ee364402b">996d05b6f5010afda4b47b20ed4b8e1ee364402b</a>
+<blockquote>
+<p>
+ oss-fuzz 25486: Initialise device colors in graphics state<br>
+<br>
+ Not all devices/color models require all the entries in a device color, so<br>
+ sometimes they don't get set, in this case, the &quot;phase&quot; entry. Trouble is,<br>
+ the clist code uses phase in a conditional.<br>
+<br>
+ Initialise the dev_color so, in such cases, we're not hitting a UMR condition.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-11 18:33: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=19ed8a965c016eda56057e29dfc373d1af87ca55">19ed8a965c016eda56057e29dfc373d1af87ca55</a>
+<blockquote>
+<p>
+ oss-fuzz 25485: Validate Type 1 font hinting paramters.<br>
+<br>
+ BlueValues, OtherBlues, FamilyBlues and FamilyOtherBlues are all made of up<br>
+ pairs of values packed into arrays. Obviously, valid arrays for those must have<br>
+ an even number of entries.<br>
+<br>
+ Ensuring they do, and erroring out should they not, prevents us from accessing<br>
+ off the end of the valid values, and encountering a UMR condition.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-11 15:08: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=542e32e6aa630ad909c39304ba4e48870695781e">542e32e6aa630ad909c39304ba4e48870695781e</a>
+<blockquote>
+<p>
+ oss-fuzz 25480: CFF - cope with &quot;empty&quot; float number.<br>
+<br>
+ If a CFF stream encoded a fractional number with no content (i.e. starting op<br>
+ code, imediately followed by an ending op code), we were still trying to<br>
+ parse meaning out of the emtpy temporary buffer. So, check we have actually<br>
+ decoded bytes from the stream, before converting to a floating point value.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-11 14:45: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=f4aae0832544e76d148db9eb52a24c34a416b56c">f4aae0832544e76d148db9eb52a24c34a416b56c</a>
+<blockquote>
+<p>
+ oss-fuzz 25474: Check the length of Coords in shading dict<br>
+<br>
+ We weren't checking if the length of Coords array for shading was valid, meaning<br>
+ we could end up using uninitialised entries in an array.<br>
+<br>
+ Check it, and throw an error if it's invalid.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-14 14:32: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=378e2071d77fad65ba0fe3beed974d1efbe180ac">378e2071d77fad65ba0fe3beed974d1efbe180ac</a>
+<blockquote>
+<p>
+ Fix crashes with pdfwrite, TrueType input fonts and Windows 64-bit build<br>
+<br>
+ With the change to 64-bits unconditionally for gs_glyph we can now<br>
+ define GS_MIN_CID_GLYPH in 64-bit terms.<br>
+<br>
+ Previously we were using the architecture size of a long_long to<br>
+ determine which define to use, and we do not define long_long on Windows<br>
+ leading to us using an essentially 32-bit definition. This caused<br>
+ indexing off the end of an array in copied_glyph_slot()<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-14 09:40: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=f0d19bf181a156d011dba422ae4d165b36b0af7e">f0d19bf181a156d011dba422ae4d165b36b0af7e</a>
+<blockquote>
+<p>
+ Bug 702897: Fix shared libtiff/libjpeg check<br>
+<br>
+ For various reasons we cannot combine shared and not shared libjpeg and<br>
+ libtiff - they either both need to be &quot;local&quot; or both shared.<br>
+<br>
+ But the check for that compatibility was triggered during the recursive<br>
+ configure call when setting up for cross compiling.<br>
+<br>
+ Skip the check for that recursive configure call.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 16:18: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=98379bb2752c64f47cc1de9f6f3c973b2c69562c">98379bb2752c64f47cc1de9f6f3c973b2c69562c</a>
+<blockquote>
+<p>
+ Bring changelog changes onto master from gs9.53.0<br>
+<br>
+ (Tweak History9.htm with jbig2dec updates)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 17:27: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=24cfe91c81b831d6d23fe0a1008285407a7adeb2">24cfe91c81b831d6d23fe0a1008285407a7adeb2</a>
+<blockquote>
+<p>
+ Fix Coverity issue 361428.<br>
+<br>
+ Don't strlen a possibly NULL path. Shouldn't ever be a problem,<br>
+ but doesn't hurt to be safe.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 17:25: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=1bd520eff4d5b8474d5aa962434dd398beb65dcc">1bd520eff4d5b8474d5aa962434dd398beb65dcc</a>
+<blockquote>
+<p>
+ Fix Coverity issue 361836.<br>
+<br>
+ Check return code.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 17:23: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=367dec7fb70f08603e37de5e1e07731a21fb4b73">367dec7fb70f08603e37de5e1e07731a21fb4b73</a>
+<blockquote>
+<p>
+ Fix Coverity issue 361837.<br>
+<br>
+ Check return codes properly.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 17:19: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=198846d0d28b0f462dc84d12f00f82d3d1d069db">198846d0d28b0f462dc84d12f00f82d3d1d069db</a>
+<blockquote>
+<p>
+ Fix Coverity issue 361838.<br>
+<br>
+ All destructors should accept NULL.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 22:47:09 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a4a8406ff4618234095fc8ed4d6e8b313a5260e4">a4a8406ff4618234095fc8ed4d6e8b313a5260e4</a>
+<blockquote>
+<p>
+ Bug 702884: Require jbig2dec 0.19 when building ghostscript.<br>
+<br>
+ In practice this has been required since commit<br>
+ 9b5008aa2bc1c6a6acb2c6f90d1ef8d6bad9e66a.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 22:41:20 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=224ffe421044b6cff107bcb3e0460aac7e029c56">224ffe421044b6cff107bcb3e0460aac7e029c56</a>
+<blockquote>
+<p>
+ Update jbig2dec stuff for 0.19 release.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 15:42: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=89ff7003acfdc52e3d3bcca930de6961f33ae927">89ff7003acfdc52e3d3bcca930de6961f33ae927</a>
+<blockquote>
+<p>
+ pdfwrite - fix image downsampling when the input is a 16-bit image<br>
+<br>
+ Bug #702868 &quot;Segmentation fault when using dPDFSETTINGS&quot;<br>
+<br>
+ The problem is to do with image downsampling, and 16 bit images. When<br>
+ the input image has 16 bits per component, and is sufficiently high<br>
+ resolution on output that it triggers image downsampling, in this case<br>
+ the image downsampling setup can't deal with the input. In addition we<br>
+ *already* deal with 16-bit input by explicitly adding a filter to<br>
+ reduce the input from 16 bits to 8, so its not necessary for the<br>
+ downsampling code to do this.<br>
+<br>
+ So fix it simply by altering the colour depth form 16 to 8 in the<br>
+ params we pass to the setup code.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-18 10:23: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=3441872e7e7e5e269d242605dbc0f47c024120a9">3441872e7e7e5e269d242605dbc0f47c024120a9</a>
+<blockquote>
+<p>
+ Bring master up to date with 9.53.0 doc changes<br>
+<br>
+ Update docs, version, dates, product family<br>
+<br>
+ for 9.53.0 RC1<br>
+<br>
+ Fox typos and stuff in the release highlights<br>
+<br>
+ Update dates'n'docs for 9.53.0.RC2<br>
+<br>
+ Docs and dates for 9.53.0<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 11:58: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=12ca7092b5b1cdd9e9d1fe3497e033bb01751a1a">12ca7092b5b1cdd9e9d1fe3497e033bb01751a1a</a>
+<blockquote>
+<p>
+ Correct fix for stack smashing.<br>
+<br>
+ Commit 4d9fa68df &quot;Fix stack smashing in blending code.&quot; was the<br>
+ wrong fix (and indeed didn't work in the weekly tests).<br>
+<br>
+ We therefore back that out, and add the correct fix.<br>
+<br>
+ When using a temporary array to allow us to Hue blend, we need<br>
+ that array to be large enough to cope with all the components<br>
+ we might have, including spots.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-09 15:05: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=b2b45b74b4272092ca46d0210b0076a618b7979a">b2b45b74b4272092ca46d0210b0076a618b7979a</a>
+<blockquote>
+<p>
+ Strip trailing whitespace from html files<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-09 14:47:30 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6a23ca3a97bcef0663d8855dc26f1a5041f2a5d4">6a23ca3a97bcef0663d8855dc26f1a5041f2a5d4</a>
+<blockquote>
+<p>
+ Strip trailing whitespace from makefiles.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-09 18:40: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=4d9fa68df46a876e60d9677eafee66b0c596d8ab">4d9fa68df46a876e60d9677eafee66b0c596d8ab</a>
+<blockquote>
+<p>
+ Fix stack smashing in blending code.<br>
+<br>
+ Page 17 of:<br>
+<br>
+ gs -Ilib -sOutputFile=out%d.psd -dGraphicsAlphaBits=4<br>
+ -dTextAlphaBits=4 -dMaxBitmap=400000000 -sDEVICE=psdcmyk<br>
+ -r72 -Z: -sDEFAULTPAPERSIZE=letter -dNOPAUSE -dBATCH -K2000000<br>
+ -dClusterJob -dJOBSERVER<br>
+ ../tests_private/comparefiles/Altona_Technical_v20_x4.pdf<br>
+<br>
+ crashes, due to do_pdf14_copy_alpha_color calling<br>
+ art_blend_luminosity_cmyk_8 and art_blend_saturation_cmyk_8<br>
+ with a temporary array of size 4, with n_chan=5.<br>
+<br>
+ The reason for this is because we are forgetting to allow for the tag<br>
+ plane. Fixed here.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-09 14:12: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=9695dd9f5352abc2ba49174447824f474f06ada6">9695dd9f5352abc2ba49174447824f474f06ada6</a>
+<blockquote>
+<p>
+ Remove prototype for non-existent function.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-09 12:46:51 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=81a0e93a723fe057d9ba56a2bf072e6b7adc2a7e">81a0e93a723fe057d9ba56a2bf072e6b7adc2a7e</a>
+<blockquote>
+<p>
+ Strip trailing whitespace from .c and .h files.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-09 11:50: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=9bd47d0ed0d012301e28e288a366408fa6aba386">9bd47d0ed0d012301e28e288a366408fa6aba386</a>
+<blockquote>
+<p>
+ Bug 702871: Fix GraphicsAlphaBits + Fill/Stroke issue.<br>
+<br>
+ When we flush the alphabuffer, mapped_start and mapped_height are<br>
+ both set to zero. When we refill it, mapped_height is set to<br>
+ non-zero. USUALLY mapped_start is set to non-zero too, but it can<br>
+ be set to zero when we are close to the bottom of the page.<br>
+<br>
+ Hence we should test for mapped_height != 0, rather than both<br>
+ mapped_height and mapped_start being non-zero.<br>
+<br>
+ So the 'quick hack' that Chris used is actually correct.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-07 19:19:10 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7222ff74e7d1249c06c163bc8b33ef5b485e8864">7222ff74e7d1249c06c163bc8b33ef5b485e8864</a>
+<blockquote>
+<p>
+ Remove deprecated device-like image handling procedures.<br>
+<br>
+ 22 years is probably long enough warning.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-07 18:53: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=8f8e7df3adf63221d70cfff54aec9c56ffbd5385">8f8e7df3adf63221d70cfff54aec9c56ffbd5385</a>
+<blockquote>
+<p>
+ Rejig PCL/PXL to call graphics library rather than device functions.<br>
+<br>
+ Also remove pl_begin_image2/pl_image_data2/pl_end_image2 etc<br>
+ functions - might as well just call direct. This leaves pldraw.c and<br>
+ pldraw.h empty, so remove them.<br>
+<br>
+ Also, take the opportunity to fix some potential cleanup problems.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-08 14:24:10 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8b805ceb6fe15bd835a48dac227b85da401d7a81">8b805ceb6fe15bd835a48dac227b85da401d7a81</a>
+<blockquote>
+<p>
+ pdfwrite - fix error handling with broken type 3 fonts<br>
+<br>
+ The test file tests_private\pdf\customer394\problems\normal_537.pdf has<br>
+ a Type 3 font with a CharStrings entry where the value is not a<br>
+ dictionary, it is the null object.<br>
+<br>
+ When trying to capture the outlines of the glyphs in order to rebuild a<br>
+ type 3 font in the output PDF file, pdfwrite detects the error. However<br>
+ due to an oversight when writing the code, the graphics state is not<br>
+ correctly preserved.<br>
+<br>
+ This is because if an error occurs in gs_text_process it unwinds the<br>
+ graphics state stack back to the level stored in the text enumerator<br>
+ at the start of the text processing. But complete_charproc() then<br>
+ proceeds to do another gs_grestore (and the code incorrectly did yet<br>
+ another gs_grestore as well!). This results in the graphics save level<br>
+ being different on exit form text processing to the state on entry.<br>
+<br>
+ Remarkably this doesn't seem to cause a problem, except for the new pdfi<br>
+ interpreter, where the gs_grestore restores back to a point before the<br>
+ type 3 font was present in the graphics state. This leads to the type<br>
+ 3 font having a reference count of 1 at the end of processing and the<br>
+ font and all its contents leaking.<br>
+<br>
+ Fix it by updating the 'level' stored in the enumerator actually being<br>
+ used by gs_text_process (which, because this is for capturing glyphs,<br>
+ is not the same enumerator as used by pdf_text_process). Also remove<br>
+ the spurious extra gs_grestore in the error clause.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-07 19:58: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=e8a6f1d98300fd06965dbdccd82a746adeb05b72">e8a6f1d98300fd06965dbdccd82a746adeb05b72</a>
+<blockquote>
+<p>
+ Fix type slipup in OCR params handling.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-07 09:54: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=2202026393550166416b4fd28daaa4f667a77301">2202026393550166416b4fd28daaa4f667a77301</a>
+<blockquote>
+<p>
+ Fix memory leak with clip device and image width/height = 0<br>
+<br>
+ When rendering masked images we can create a clip device in order to do<br>
+ the actual masking before passing the result to the final device.<br>
+<br>
+ After creating the device we store it in a 'gs_image_common_enum' for<br>
+ later use. We then proceed to initialise the main image enumerator in<br>
+ gs_image_common_init().<br>
+<br>
+ As an optimisation, if the image width or height is 0, we don't waste<br>
+ any time processing it but simply end the image and exit.<br>
+<br>
+ However, if we had created a clip device, we did not free that device<br>
+ leading to a memory leak.<br>
+<br>
+ This commit simply 'un-retains' the device causing it to be freed.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-03 16:20:34 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2c2fab370060e84b55c74c1c99fa1a8046a5b4f8">2c2fab370060e84b55c74c1c99fa1a8046a5b4f8</a>
+<blockquote>
+<p>
+ Font copying - fix memory leak<br>
+<br>
+ When copying a glyph for a copied font, if we encountered the same glyph<br>
+ twice, with the same name, we simply replaced the name in the name table<br>
+ of the copied font. If there was already an entry then it would leak.<br>
+<br>
+ Note that a second instance of the glyph with a different name would<br>
+ end up in the extra names table and doesn't leak.<br>
+<br>
+ Fix the leak by freeing the existing string copy if we have a new one.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-02 13:50: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=bc0403425e55309fbf372a7ebc66037d74e140d8">bc0403425e55309fbf372a7ebc66037d74e140d8</a>
+<blockquote>
+<p>
+ pdfwrite - add a new method to detect pdfmark-capable devices<br>
+<br>
+ The existing method to determine if the current device is capable of<br>
+ processing pdfmark operations only works in PostScript. Since pdfmark<br>
+ is a PostScript operator this isn't unreasonable, but we need a way for<br>
+ the pdfi interpreter to know that a device is capable of handling<br>
+ pdfmarks, because some information from the current interpreter is<br>
+ passed that way (eg DOCINFO).<br>
+<br>
+ Add a new parameter &quot;PdfmarkCapable&quot; which can be retrieved via a<br>
+ spec_op. Any device capable of handling pdfmarks (via put_param calls)<br>
+ must return true for this parameter.<br>
+<br>
+ Update the current PDF interpreter to use this instead of the PostScript<br>
+ method.<br>
+<br>
+ Note: the ps2write device is *not* PdfmarkCapable.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-31 14:29: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=54304275c68abdf131d2e4f511bcc7475f611b30">54304275c68abdf131d2e4f511bcc7475f611b30</a>
+<blockquote>
+<p>
+ oss-fuzz 23113: Bounds check buffer in gs_scan_token()<br>
+<br>
+ To handle malformed/multiply negated numbers (e.g. &quot;---1&quot;) in PDF files,<br>
+ the number scanning code skips over multiple leading minus signs (*only* for<br>
+ PDFs), but code skipping the minus signs did not bounds check the buffer, so<br>
+ could rattle off the end.<br>
+<br>
+ Unfortunately, where this happens, there is no way for us to differentiate<br>
+ between a (malformed) token that straddles a buffer boundary, or a (strange!)<br>
+ token that is the entire buffer.<br>
+<br>
+ As the code in question is only active for PDF interpreting, and the Postscript<br>
+ PDF interpreter uses the &quot;token&quot; operator to tokenize stream contents, we can<br>
+ assume (in this case) the buffer is the entire token.<br>
+<br>
+ So, in the event we hit the end of the buffer without reaching something other<br>
+ than a '-' then reset the buffer pointer, and &quot;retry&quot; it as a name.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-31 09:39: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=86f8c00204342436a09d7fac2ea6d0bb551b9118">86f8c00204342436a09d7fac2ea6d0bb551b9118</a>
+<blockquote>
+<p>
+ CID 361525: Protect from NULL pointer deref (z_fontenum)<br>
+<br>
+ In reality, the NULL pointer dereference here is not actually possible (barring<br>
+ memory corruption issues), but the checks are trivial, the code only runs<br>
+ at most once per job, enumerating the fonts is the slow part of the process,<br>
+ rather than the linked list management, and it seems easiest to just placate<br>
+ Coverity.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-31 13:48: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=0b9dbbc38d1d0e5593452337b6a45431053a1ba0">0b9dbbc38d1d0e5593452337b6a45431053a1ba0</a>
+<blockquote>
+<p>
+ Fix crash with copied TrueType fonts and pdfwrite<br>
+<br>
+ When freeing a copied font we now test for the data pointer being<br>
+ non-NULL instead of checking the size of the string. This was because<br>
+ we would still create strings for glyphs with a length of 0 and using<br>
+ the size meant we would not free those strings, leading to a memory<br>
+ leak.<br>
+<br>
+ However this causes problems (only for 0 length data) with TrueType<br>
+ fonts regarding ownership. We avoid this by not allocating any memory<br>
+ for 0 length string data.<br>
+<br>
+ We do need to fill in the remaining elements of the copied glyph though.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-28 08:56:23 +0100
+</strong>
+<br>Peter Cherepanov &lt;sphinx.pinastri@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0ab8e25b94c837c6128fff791b2a99486b1ee73c">0ab8e25b94c837c6128fff791b2a99486b1ee73c</a>
+<blockquote>
+<p>
+ Bug 702620: Fix linked list creation in z_fontenum<br>
+<br>
+ Fixes memory leak.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-28 09:31: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=9bd1cdde34a49e6c0b885db5e258a41a4fccda52">9bd1cdde34a49e6c0b885db5e258a41a4fccda52</a>
+<blockquote>
+<p>
+ Bug 702837 typo in warning message<br>
+<br>
+ Thanks to Herbert Voss for spotting this. Fixed the typo and updated the<br>
+ version number in the warning from 9.53 to 9.53.0 to match the actual<br>
+ version and patch number of the release (the decision to add the patch<br>
+ level was taken after the original commit)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 20:35:06 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1f6172705bb2811986175d72484705d68995fdd1">1f6172705bb2811986175d72484705d68995fdd1</a>
+<blockquote>
+<p>
+ Bug 700404: Make Windows usertime be CPU time, not elapsed time.<br>
+<br>
+ Thanks to Peter Cherepanov for this patch (and his patience in having<br>
+ it accepted). Tested with VS 2005, 2008, 2015 and 2019.<br>
+<br>
+ WIth this change Windows operates like linux. Note that usertime always<br>
+ returns 0 the first time it is called (refer to commit cc156631). This<br>
+ is a bit confusing, but is intentional.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 12:19:53 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=49c4fa7e6c1a750ed976c7f1f46e3f8474249993">49c4fa7e6c1a750ed976c7f1f46e3f8474249993</a>
+<blockquote>
+<p>
+ Fix pdfwrite memory leak in pattern clists<br>
+<br>
+ This is for non-GC interpreters only.<br>
+<br>
+ This code is very convoluted, but I think the -&gt;retained flag can be<br>
+ used to see if it's okay to safely free the memory.<br>
+<br>
+ In the case of patterns, for at least some cases the ctile wasn't<br>
+ in the cache so it didn't free anything in gx_pattern_cache_free_entry().<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 13:54:33 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=94c344c43b274c86f529916085e02d7dc50d5edb">94c344c43b274c86f529916085e02d7dc50d5edb</a>
+<blockquote>
+<p>
+ Bug 702785: Add UTF-8 encoding for strings in Info dict to pdf_info.ps<br>
+<br>
+ Thanks to Peter Cherepanov for this change.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-26 10:15:58 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d7a70f69851a071eb9dfe7a968e2cb2f6302f1ba">d7a70f69851a071eb9dfe7a968e2cb2f6302f1ba</a>
+<blockquote>
+<p>
+ Bug 702806: Performance decreases throughout file, PS to PDF<br>
+<br>
+ A sample file of 1,000 pages from the customer allowed us to reproduce<br>
+ the issue. The file creates MANY fonts (3,398 over the 1,000 pages),<br>
+ and the font_cache list (not really a cache) would have the newest<br>
+ created fonts at the head of the list, but later pages would use<br>
+ fonts created earlier that were at the end of the list.<br>
+<br>
+ Fix this by moving the found font to the head of the list (MRU).<br>
+ On this file, the time on a fast machine went from 152 to 65 seconds<br>
+ and the times for pages does not show the growth seen originally.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 15:31:19 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=225de4d2960f187a49521097a4235872d94a8fb3">225de4d2960f187a49521097a4235872d94a8fb3</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak in copied font<br>
+<br>
+ This really should have been fixed by an earlier commit, but it had a<br>
+ dumb error. We were freeing cfdata-&gt;names after we'd checked the<br>
+ first entry in the table, instead of checking *every* entry in the<br>
+ table first. In fact the memory was already freed blow so we didn't<br>
+ need this at all.<br>
+<br>
+ In addition the code to free extra_names was inside the loop and didn't<br>
+ need to be as its a linked list not an array. So move it outside where<br>
+ it will only execute once. Should be a tiny bit faster.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 14:11: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=53c10bd88f272c25fc5475dc63ea55140b9616db">53c10bd88f272c25fc5475dc63ea55140b9616db</a>
+<blockquote>
+<p>
+ pdfwrite - fix several memory leaks with colour spaces<br>
+<br>
+ The colour space creation code uses pdf_string_to_cos_name() quite<br>
+ frequently, and it often then passes the resulting cos_value_t to<br>
+ functions such as cos_array_put and cos_dict_put.<br>
+<br>
+ The basic 'put' functions actually copy scalar objects when they are<br>
+ put in an array or dictionary (but they don't copy other composite<br>
+ objects!) so we need to free the object created by<br>
+ pdf_string_to_cos_name() after we've 'put' it.<br>
+<br>
+ The only function to do that is cos_value_free() but that (unreasonably)<br>
+ requires a cos_object_t parameter, even though the cos_value may not<br>
+ be in a cos_object. Since the only use for the cos_object is to<br>
+ retrieve a memory_t pointer in order to free the data used, we can<br>
+ simply replace the cos_object_t * with a gs_memory_t * and use that<br>
+ directly.<br>
+<br>
+ This meant a few places needed to change where cos_value_free() was<br>
+ already being used.<br>
+<br>
+ After that I rationalised the code in gdevpdfc.c to some extent. Instead<br>
+ of the existing mixture of *_put() and *_put_no_copy() calls I've chosen<br>
+ to use *_put() calls throughout and then explicitly free the data which<br>
+ has supposedly been copied.<br>
+<br>
+ We could have used _nop_copy() throughout but that would have meant<br>
+ checking the return value and freeing the original data if the copy<br>
+ failed. It seems simpler just to unconditionally free the original<br>
+ data.<br>
+<br>
+ In one place we also need to check that the original data was not NULL<br>
+ and that it was a scalar type. This is because (as noted above) if it<br>
+ isn't a scalar type the *_put() functions *don't* copy the value, so we<br>
+ don't want to free the original data in this case as it has been<br>
+ transferred to the cos_object.<br>
+<br>
+ Nancy did most of the original work on discovering the actual memory leak<br>
+ here, and suggesting the basic fix, so many thanks!<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 14:00: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=73856faec1a4e1ed7d4099ec4a05f30d53c7c429">73856faec1a4e1ed7d4099ec4a05f30d53c7c429</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak when allocation of a base font fails<br>
+<br>
+ When the allocation of a PDF base font (pbfont) fails we were only<br>
+ freeing the memory used by the structure, not any of the components<br>
+ stored in it.<br>
+<br>
+ There are quite a few subsidiary elements which need to be free and<br>
+ there is already code to handle this, but its bundled up in<br>
+ pdf_font_descripto_free(). So to make this easier, break out the code<br>
+ to free the base font from pdf_fotn_descriptor_free() into its own<br>
+ routine, pdf_base_font_free() and call that from both<br>
+ pdf_font_descriptor_free() and pdf_base_font_alloc().<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 13:57: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=346ea731a43062662e57038aceea28859de51be6">346ea731a43062662e57038aceea28859de51be6</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak when gs_copy_font fails<br>
+<br>
+ If we can't copy the /.notdef glyph into a font we fail (its a<br>
+ requirement for a valid font in a PDF file to have at least a /.notdef).<br>
+<br>
+ If that happened we did not free the newly made copy of the font. Fix<br>
+ that by freeing the copy.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-25 15:17: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=367c3858886d1c43b75e3ea48f770d80db800d15">367c3858886d1c43b75e3ea48f770d80db800d15</a>
+<blockquote>
+<p>
+ Add OCREngine parameter.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 12:33:35 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=30c56c669b05dd09518fad60a8f0ae8de4bcf186">30c56c669b05dd09518fad60a8f0ae8de4bcf186</a>
+<blockquote>
+<p>
+ Add runtests to clustermaster.pl<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-26 16:11:27 -0700
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a5a9da62c49f1881186b2528f45f3ef846ad70ed">a5a9da62c49f1881186b2528f45f3ef846ad70ed</a>
+<blockquote>
+<p>
+ Add Makefile for api_test<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-26 12:44:03 -0700
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a69fc03408010df05732af7da229b64a181b7edf">a69fc03408010df05732af7da229b64a181b7edf</a>
+<blockquote>
+<p>
+ Fix api_test.c for compiling on Linux.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-25 14:17:50 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=99a34d86e93eb482c12c2143a31cfc227042dcf9">99a34d86e93eb482c12c2143a31cfc227042dcf9</a>
+<blockquote>
+<p>
+ Fix memory leak in pdfwrite images with errors in them.<br>
+<br>
+ This was only a problem in non-GC interpreters (e.g. pdfi)<br>
+<br>
+ This was an error that specifically affected images that got an<br>
+ error during the first row (so data_height == 0).<br>
+<br>
+ Added pdf_end_abort_image() to abort an image without writing it.<br>
+ Also make sure to clean up the streams.<br>
+<br>
+ Sample file: Bug 688023 test_out.pdf<br>
+ Also: tests/pdf/Jbig2_042_13.pdf<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 17:43: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=3812280c5b021b16cce184b7aa6981d51a6ee5be">3812280c5b021b16cce184b7aa6981d51a6ee5be</a>
+<blockquote>
+<p>
+ Bug 702761: Improve handline of PS file with many large ReusableStreams<br>
+<br>
+ This file, with its original, non-optimal, method collected 1,000 ReusableStream<br>
+ files, each of which was 7.5Mb, stored as 1,000 arrays of 180 40,000 byte strings.<br>
+ As the file progressed, the load on the GC (garbage collector) to mark-and-sweep<br>
+ all of those strings got slower and slower.<br>
+<br>
+ This change collects the strings in the array of strings into a single large<br>
+ string (up to max_string_size, currently 16Mb), so the load on the GC is cut<br>
+ down to finding and freeing the array-of-strings since the last GC, and the<br>
+ (at most) 1,000 strings, one for each ReusableStreamDecode &quot;file&quot; object.<br>
+<br>
+ The submitter has already accepted the change to avoid storing the expanded<br>
+ raw Image data, but there are other usages of ReusableStreamDecode that may<br>
+ be used with large files (e.g. streamed PDF input files) that can benefit<br>
+ from not loading down the GC.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-25 12:16:10 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e9104765e434280d4de3c781dfa5b9bebd5a524f">e9104765e434280d4de3c781dfa5b9bebd5a524f</a>
+<blockquote>
+<p>
+ pdfwrite - fix another memory leak<br>
+<br>
+ When we close down pdfwrite we check the stack of saved gstates to<br>
+ see if there are any dash patterns to be freed. We must check the<br>
+ entire potential stack, not just to the current level, in case we<br>
+ allocated a dash pattern copy at a deeper level than we were at when<br>
+ we exited.<br>
+<br>
+ Because dash_patttern is allocated in non-gc memory this leak affects<br>
+ all interpreters.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-25 12:13: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=e59bed1d7e3481e74168fdaa0b3e1293acc30d2b">e59bed1d7e3481e74168fdaa0b3e1293acc30d2b</a>
+<blockquote>
+<p>
+ pdfwrite - more memory leak fixes with fonts<br>
+<br>
+ When we free a font copy we need to:<br>
+<br>
+ 1) Free the client_data 'names' array as well as the strings it contains<br>
+ 2) Free the extra_names linked list.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 22:41: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=fc3184789d23b42ba7ded18b2626c59e7d176624">fc3184789d23b42ba7ded18b2626c59e7d176624</a>
+<blockquote>
+<p>
+ C# API demo. Make printing (creation of XPS content) a different process<br>
+<br>
+ Since we are limited to one instance, we will go ahead and launch a different<br>
+ process which will be handed arguments to do the printing, which involves the<br>
+ creation of XPS content via the xpswrite device which is then fed through<br>
+ the Windows XPS printing pipeline.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 10:01:58 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e7d5f25fc87573361cf5ec3a533021562659bff2">e7d5f25fc87573361cf5ec3a533021562659bff2</a>
+<blockquote>
+<p>
+ C# API. Minor cleanup of viewer demo application.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 18:55:30 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ad0678d3d34948eb7c316b5511ffdb098e3afab2">ad0678d3d34948eb7c316b5511ffdb098e3afab2</a>
+<blockquote>
+<p>
+ Fix Tesseract traineddata file loading.<br>
+<br>
+ If it was finding any Tesseract data in ROM it was then not looking<br>
+ for files.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-21 18:44: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=f26bb372f3c2d8e564074c08943b60682bc8ed8c">f26bb372f3c2d8e564074c08943b60682bc8ed8c</a>
+<blockquote>
+<p>
+ Fix gs_main_set_language_param to escape encapsulation.<br>
+<br>
+ If we are running in JOBSERVER mode, then postscript can't set stuff<br>
+ into systemdict while in a job. We need to exit the encapsulation,<br>
+ set the param, then reenter.<br>
+<br>
+ (Contrary to my memory, dnit_job does not exit the encapsulation - or<br>
+ rather it does, but it unsets the device, and then immediately reenters<br>
+ encapsulation again.)<br>
+<br>
+ Thanks are due to Ray for identifying the problem, and to Chris<br>
+ for being a sounding board.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-21 18:57: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=302aa9db9f03c2d0795ec8a8c249571bf86cd555">302aa9db9f03c2d0795ec8a8c249571bf86cd555</a>
+<blockquote>
+<p>
+ Tidy up setting user params for PDF processing<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-21 18:50: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=6153b859d1fd3780cb95d20f678843ab1ba470a1">6153b859d1fd3780cb95d20f678843ab1ba470a1</a>
+<blockquote>
+<p>
+ PDF interp: Consolidate disabling of page handler device<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 09:24: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=9daf042fd7bb19e93388d89d9686a2fa4496f382">9daf042fd7bb19e93388d89d9686a2fa4496f382</a>
+<blockquote>
+<p>
+ Coverity 361429: move &quot;break&quot; to correct place.<br>
+<br>
+ We had to add the outputfile to the &quot;control&quot; file permission list (as well<br>
+ as write), but for the &quot;pipe&quot; case, I accidentally added the call after the<br>
+ break out of loop that checks for a pipe.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 18:31: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=2e3540010069071c8f9d52d2486067940a23b6e3">2e3540010069071c8f9d52d2486067940a23b6e3</a>
+<blockquote>
+<p>
+ Rejig gs_pattern1_make_pattern TilingType != 2 behaviour.<br>
+<br>
+ Firstly, we change the rounding on bbw so as to give minimum<br>
+ distortion to the pattern size.<br>
+<br>
+ Secondly, we scale the contents to avoid either nasty gaps around<br>
+ the edges, or lost content around the edges.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 17:46: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=fb6a8352a2ba5b1c5b866b27638db4eaf2acac0f">fb6a8352a2ba5b1c5b866b27638db4eaf2acac0f</a>
+<blockquote>
+<p>
+ Whitespace/Layout changes to gs_pattern1_make_pattern.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-19 19:24:19 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3e74ad126ee3983c634b8254dec0fc3b6544f0bd">3e74ad126ee3983c634b8254dec0fc3b6544f0bd</a>
+<blockquote>
+<p>
+ Rejig internals of gs_pattern1_make_pattern.<br>
+<br>
+ Previously we called &quot;compute_inst_matrix&quot; once at the start, then<br>
+ maybe either called it again (if we ADJUST_SCALE_BY_GS_TRADITION)<br>
+ or manually did part of it (retransforming the bbox) (if we<br>
+ ADJUST_AS_ADOBE).<br>
+<br>
+ Due to the vagaries of floating point, we can't be sure that<br>
+ retransforming the bbox will give exactly the same result (as<br>
+ our attempt to move the bbox onto a pixel origin may result<br>
+ in future transformations may give x +/- epsilon rather x,<br>
+ for example). Consequently, when we retransform, follow the<br>
+ same procedure as we did before.<br>
+<br>
+ This produces some diffs. We choose to accept these (minor) diffs<br>
+ to give us consistent results.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-19 19:15: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=a3e7fa93b5f6afe7d74bf7c654dec1cff1adb76d">a3e7fa93b5f6afe7d74bf7c654dec1cff1adb76d</a>
+<blockquote>
+<p>
+ Simplify parameter passing in compute_inst_matrix.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 14:40:01 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=65942618d083d49467f3dd6d9a802e94c6ae0796">65942618d083d49467f3dd6d9a802e94c6ae0796</a>
+<blockquote>
+<p>
+ pdfwrite - fix another type 3 memory leak this time with CharProcs<br>
+<br>
+ CharProcs are a cos object, not a simple byte array, so when we free<br>
+ them we need to use cos_free() not gs_free_object().<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 14:38: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=2fdd3c0b9140dd8bd5a9b9bfdcc5ba4683a6eea0">2fdd3c0b9140dd8bd5a9b9bfdcc5ba4683a6eea0</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak with type 3 fonts<br>
+<br>
+ When freeing type 3 font *resources* (ie the copy pdfwrite keeps to<br>
+ write into the PDF file) we were not freeing some of the allocated<br>
+ objects, the 'cached' array and the Resources (which are a dictionary<br>
+ and so need to be freed by cos_free).<br>
+<br>
+ Include gdevpdfo.h for the definition of cos_free()<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 09:01: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=a7cd4bbf979f2ecbaf19485cbfef42dcb179a927">a7cd4bbf979f2ecbaf19485cbfef42dcb179a927</a>
+<blockquote>
+<p>
+ pdfwrite - fix some typos in comments<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 09:01:02 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c5ae29c5b4ae5d4d9488842275d229b39f445bf1">c5ae29c5b4ae5d4d9488842275d229b39f445bf1</a>
+<blockquote>
+<p>
+ Coverity ID 361427 fix uninitialised variable.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-22 13:57: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=3f04eaa6230cfe22b944bde4eaeed6c3087d5189">3f04eaa6230cfe22b944bde4eaeed6c3087d5189</a>
+<blockquote>
+<p>
+ pdfwrite - fix numerous font-related memory leaks<br>
+<br>
+ The pdfwrite device was originally written to do all its memory<br>
+ management via garbage collection, Unfortunately this leads to numerous<br>
+ memory leaks when using an interpreter which doesn't implement a<br>
+ garbage collecting memory model. Currently that's everything except<br>
+ the PostScript interpreter.<br>
+<br>
+ Many of these leaks cannot be exercised by anything except the<br>
+ PostScript interpreter (and the new pdfi interpreter) but I think some<br>
+ certainly could be.<br>
+<br>
+ Don't increment the 'subst' structure when copying a TrueType CIDFont,<br>
+ this leads to the structure never being freed.<br>
+<br>
+ The code to free the 'subst' CID when freeing a TrueType CIDFont was<br>
+ incorrect, leading to memory crashes (previously it was simply never<br>
+ executed, and leaked).<br>
+<br>
+ When increasing the size of the CIDMap entry for a TrueType CIDFont,<br>
+ free the memory used by the original map after copying the data and<br>
+ before overwriting the stored pointer.<br>
+<br>
+ When freeing a copied font, if the font is a TrueType CIDFont decrement<br>
+ the 'subst_CID_on_WMode' member so that it gets freed.<br>
+<br>
+ When freeing a copied font, use the copied glyph data 'data' member<br>
+ rather than the 'size' member to decide if we should free the data.<br>
+ Sometimes we allocate memory for a size of 0.<br>
+<br>
+ When freeing a copied font, if we created a names array for the glyphs<br>
+ we need to free the string copies of the names we created as well.<br>
+<br>
+ When freeing a copied font, if the CIDFMap entry has been created we<br>
+ must free that too.<br>
+<br>
+ When dropping a 'complete' font copy because we won't be using it, do<br>
+ not simply set the pointer to NULL but actually call code to free the<br>
+ copied font properly.<br>
+<br>
+ When freeing a pdfwrite copy of a base font, if the CIDSet member has<br>
+ been allocated we need to free it.<br>
+<br>
+ When adding to the pdfwrite font cache, if the glyph_usage and<br>
+ real_widths members have already been allocated we must free them before<br>
+ assigning newly allocated memory.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-21 12:16:26 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8fcc3e370c3aca71691d48c92d57d7c2ca80672d">8fcc3e370c3aca71691d48c92d57d7c2ca80672d</a>
+<blockquote>
+<p>
+ C# API: Addition of gsapi_get_param and gsapi_set_param<br>
+<br>
+ Preliminary use of these. Which has revealed issues in GPDL with first page<br>
+ last page use for PDF files.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-21 11:13: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=d55c0edd6c1671d3a09a6061a81e25c0d414cc3f">d55c0edd6c1671d3a09a6061a81e25c0d414cc3f</a>
+<blockquote>
+<p>
+ More version number fixes<br>
+<br>
+ The code to retrieve the Ghostscript paths from the Windows Registry<br>
+ was generating a key based on the version number, but since we added the<br>
+ patch the generation was incorrect.<br>
+<br>
+ Since this is the third (!) case of this, scan the code for any usage of<br>
+ gs_version, gs_version_number, GS_VERSION, GS_VERSION_NUMBER,<br>
+ gs_revision, gs_revision_number, GS_REVISION and GS_REVISION_NUMBER.<br>
+<br>
+ This reveals two more places, neither serious but we might as well fix<br>
+ them while we're here.<br>
+<br>
+ Thanks to Akira Kakuto for finding this problem and suggesting a patch.<br>
+ I chose to use the code we were already using in two other places, just<br>
+ for consistency, but the supplied patch was equally good.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 14:46:07 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=34259c34410f7903981d61f1fc9c0b00fd9b3ed1">34259c34410f7903981d61f1fc9c0b00fd9b3ed1</a>
+<blockquote>
+<p>
+ Fix memory leak in freeing dash_pattern from pdfwrite device state<br>
+<br>
+ The vgstack_depth = 0 still means that the entry needs to be freed.<br>
+ (off by one error)<br>
+<br>
+ This was a leak in both gs and pdfi<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 18:33: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=fae04c94708feb693e7582a9707ca2791e30334e">fae04c94708feb693e7582a9707ca2791e30334e</a>
+<blockquote>
+<p>
+ Delete binary files from lcms2mt tree<br>
+<br>
+ There were left over binary libraries, remove them.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 17:19:09 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3920a727fb19e19f597e518610ce2416d08cb75f">3920a727fb19e19f597e518610ce2416d08cb75f</a>
+<blockquote>
+<p>
+ Fix pdfwrite &quot;%d&quot; mode with file permissions<br>
+<br>
+ Firstly, in gx_device_delete_output_file the iodev pointer was being passed<br>
+ to the delete_method incorrectly (passing a pointer to that pointer). Thus<br>
+ when we attempted to use that to confirm permission to delete the file, it<br>
+ crashed. Credit to Ken for finding that.<br>
+<br>
+ Secondly, due to the way pdfwrite works, when running with an output file per<br>
+ page, it creates the current output file immediately it has completed writing<br>
+ the previous one. Thus, it has to delete that partial file on exit.<br>
+<br>
+ Previously, the output file was not added to the &quot;control&quot; permission list,<br>
+ so an attempt to delete it would result in an error. So add the output file<br>
+ to the &quot;control&quot; as well as &quot;write&quot; list.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-13 09:47:09 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cb93fa6079796d99b3fb3cfbdd0b919f57d34f58">cb93fa6079796d99b3fb3cfbdd0b919f57d34f58</a>
+<blockquote>
+<p>
+ Fix memory leaks associated with pdfwrite, type3x images<br>
+<br>
+ These leaks are only an issue for non-GC interpreters such as pdfi.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-19 14:31:50 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ac67c85c93703d6883f6d32a6996f33a51293640">ac67c85c93703d6883f6d32a6996f33a51293640</a>
+<blockquote>
+<p>
+ Bug702727 -- Fix rc counting of penum-&gt;pcs for image1 and image4<br>
+<br>
+ This relates to the structure gx_image_enum_s which is used by image1<br>
+ and image4.<br>
+<br>
+ The fix is unfortunately scattered around the code, but I think I found<br>
+ appropriate places. It is ugly because type1 and type4 images<br>
+ apparently share a lot of the same code, so the module layers are not<br>
+ as they should be.<br>
+<br>
+ Need to increment and decrement the rc since the enum struct wants to<br>
+ keep it around (especially in gs where it literally goes back out into<br>
+ the gs interpreter between when the enum is built and when it is<br>
+ used!).<br>
+<br>
+ This is part of cleaning up memory leaks for non-GC interpreters<br>
+ (pdfi).<br>
+<br>
+ Changed the pcs entry in the enum struct to not be const, since it<br>
+ needs to be reference counted.<br>
+<br>
+ Cleaned up an unrelated compiler warning in gxidata.c<br>
+ There are also some unrelated whitespace changes.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 13:53: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=d434639da425b6172fe1230bbc331ec057daff6f">d434639da425b6172fe1230bbc331ec057daff6f</a>
+<blockquote>
+<p>
+ Trim trailing white space<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 12:12: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=3808bc680a35b6a19b75555539f66fdd874138f5">3808bc680a35b6a19b75555539f66fdd874138f5</a>
+<blockquote>
+<p>
+ txtwrite - improve CIDFont handling<br>
+<br>
+ The calculation of the font size for modes 0 &amp; 1 was incorrect when the<br>
+ font was a CIDFont. The size calculation relied upon the FontMatrix of<br>
+ the type 0 font and did not consider the descendant.<br>
+<br>
+ For PDF files we can ignore the type 0 font and simply use the<br>
+ descendant font matrix. For PostScript input we will probably have to<br>
+ be more careful so this is an interim fix for PDF input only.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 12:10: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=39a9388184d1788d48e35c47a3e92a4411d106f7">39a9388184d1788d48e35c47a3e92a4411d106f7</a>
+<blockquote>
+<p>
+ PDF interpreter - reject non-dictionary /Annots array entries<br>
+<br>
+ Bug #702745 &quot;Error: /typecheck in --runpdf--&quot;<br>
+<br>
+ The PDF file has an invalid /Annots array entry:<br>
+<br>
+ 5 0 obj<br>
+ &lt;&lt;/Annots[5 0 41 0 R]<br>
+<br>
+ The entries should be dictionaries or indirect references to<br>
+ dictionaries, integers aren't valid. This causes a typecheck error when<br>
+ trying to read keys from the dictionary.<br>
+<br>
+ This commit checks that the entry is a dictionary before trying to<br>
+ process it; if it isn't we raise a warning and ignore it.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 09:12: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=c935055b6b5d20fceb6175877bee9b529dddb199">c935055b6b5d20fceb6175877bee9b529dddb199</a>
+<blockquote>
+<p>
+ Fix PDF /Producer for new patch level<br>
+<br>
+ Bug #702772 &quot;Strange /Producer attribute&quot;<br>
+<br>
+ The change to include a patch level for Ghostscript in the gs_revision<br>
+ value wasn't being reflected in the code to generate the version<br>
+ number used in the PDF /Producer string.<br>
+<br>
+ Copied the code from printf_program_ident() in base/gsmisc.c to the<br>
+ code in pdf_store_default_Producer() and commented both pieces of code<br>
+ to note the existence of each other so that in future hopefully we won't<br>
+ forget to keep them in sync.<br>
+<br>
+ Thanks to Peter Cherepanov for spotting the flaw.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-19 11:49:39 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d07b9485b2bb3a70552aee9407fcff8fa52698df">d07b9485b2bb3a70552aee9407fcff8fa52698df</a>
+<blockquote>
+<p>
+ Fix memory leak in pdf_begin_typed_image()<br>
+<br>
+ Need to decrement the ColorSpace before overwriting it.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-19 11:38:03 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=99e437e619fbd3d91242cba98cc462dadb9a5b8e">99e437e619fbd3d91242cba98cc462dadb9a5b8e</a>
+<blockquote>
+<p>
+ Fix some compiler warnings<br>
+<br>
+ This also has some whitespace changes -- not my fault! :)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-18 14:49:41 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a111d7316b0cb2dea8f840e8387fc47b9e252c36">a111d7316b0cb2dea8f840e8387fc47b9e252c36</a>
+<blockquote>
+<p>
+ Refactor pdf_begin_typed_image()<br>
+<br>
+ Mainly just cleaning up the error handling so it all exits at the<br>
+ bottom.<br>
+<br>
+ Reduced the amount of duplicate code.<br>
+<br>
+ Fixed a bunch of memory leaks that would only happen on error<br>
+ paths.<br>
+<br>
+ Broke out the Eps2Write code to reduce size of main function a bit.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-18 11:15:26 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4ccf8a357a8fce8998ad8d4ab5abb3a4c6b63374">4ccf8a357a8fce8998ad8d4ab5abb3a4c6b63374</a>
+<blockquote>
+<p>
+ Fix one of several memory leaks in pdfwrite images<br>
+<br>
+ The leak is in non-GC interpreters such as pdfi.<br>
+<br>
+ This is a 1600 line function. I think it is in drastic need of<br>
+ refactoring in order to be maintainable.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-19 18:21: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=cc90efbe4abce945e36a68876218a46606b84015">cc90efbe4abce945e36a68876218a46606b84015</a>
+<blockquote>
+<p>
+ Tweak type1 pattern code to remove some needless fabs.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-18 23:23:40 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ec2699f50aa3ada4ef2c477c7577331a3950bcc8">ec2699f50aa3ada4ef2c477c7577331a3950bcc8</a>
+<blockquote>
+<p>
+ Fix Bug 702381: Hang due to cyclic PDF resources.<br>
+<br>
+ The loop is caused by a circular /ParentResources attribute.<br>
+ This branch of code is triggered by an error in the sample file:<br>
+ misplaced /Form resources in a Type 3 font. This font has /Resource<br>
+ dictionaries added to /CharProcs entries rather than the font dictionary.<br>
+<br>
+ Note that this patch fixes the hang issue, but does not correct the<br>
+ issue of not being able to find the correct resource (in the CharProc)<br>
+ so that the file still output does not match Adobe (mupdf has that<br>
+ same issue).<br>
+<br>
+ Thanks to Peter Cherepanov for this patch.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-17 15:44: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=9619c8fc8d1e2548c737adfb7f6b8b15d49d20a4">9619c8fc8d1e2548c737adfb7f6b8b15d49d20a4</a>
+<blockquote>
+<p>
+ Bug 702744: Add windows utf-8 handling for unlink and rename.<br>
+<br>
+ To do this, we introduce gp_unlink and gp_rename, and call those<br>
+ as appropriate.<br>
+<br>
+ Also, make gp_open_scratch_file add the file to the permit list.<br>
+ When such a file is closed, it will be deleted from the permit list.<br>
+<br>
+ It will also be removed from the permit list if the file is deleted<br>
+ using the PS deletefile operator.<br>
+<br>
+ On closedown, if scratch files haven't been deleted, then we'll<br>
+ delete them as part of the closedown of gs_lib_ctx.<br>
+<br>
+ This means that 'purging' the control lists must not remove scratch<br>
+ file paths from the list.<br>
+<br>
+ Also, ensure that gsapi callers can't maliciously (or accidentally)<br>
+ remove scratch path paths from the list so as to leave them around<br>
+ after closedown.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-18 10:18: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=df245b46c1a5290239b2932e2a5d1bdeae710c48">df245b46c1a5290239b2932e2a5d1bdeae710c48</a>
+<blockquote>
+<p>
+ Bump version number<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-28 12:54: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=5f75977a0da7b8e92f2b8241440c43cc44863f63">5f75977a0da7b8e92f2b8241440c43cc44863f63</a>
+<blockquote>
+<p>
+ Docs/dates/version for 9.53.3<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 08:19: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=c876777dcadbb0acbc8cc887e94360c6f5adbc0d">c876777dcadbb0acbc8cc887e94360c6f5adbc0d</a>
+<blockquote>
+<p>
+ WhatIsGS.htm updates from Lisa F<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-29 20:16: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=be33716b4a6d42f9bd5a5485514dbaeb9e9524b2">be33716b4a6d42f9bd5a5485514dbaeb9e9524b2</a>
+<blockquote>
+<p>
+ Bug 702948: Ensure initial bitmap cache sizes are properly aligned<br>
+<br>
+ Now that the allocations from the bitmap cache are aligned to the platform's<br>
+ required alignment, see commit:<br>
+<br>
+ 260c443bc14cdffa4d94e14c3a57e35bebee3a5b<br>
+<br>
+ We also want the initial size of the memory pool used by the cache to be<br>
+ &quot;aligned&quot;.<br>
+<br>
+ This is so that code that attempts to identify cache entries to evict by<br>
+ requesting a size equal to the entire size of cache memory pool doesn't get an<br>
+ unexpected failure, because we've rounded up that allocation request to a value<br>
+ larger than the entire size of the memory pool.<br>
+<br>
+ Because we don't expect an error to be possible at that point, a crash can<br>
+ occur.<br>
+<br>
+ Of the &quot;normal&quot; platforms we use, this only exhibits on Win32 because that is<br>
+ the only platform where the align_bitmap_mod we use is less than the<br>
+ obj_align_mod used for the memory managers.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-28 20:10:16 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=27824a749775a233725cf3f302ce8156c478f7e1">27824a749775a233725cf3f302ce8156c478f7e1</a>
+<blockquote>
+<p>
+ Fix icc profile reference counting in transparency compositor<br>
+<br>
+ Found during Windows testing for a release.<br>
+<br>
+ The full test file for<br>
+ https://bugs.ghostscript.com/show_bug.cgi?id=693365<br>
+<br>
+ would cause Ghostscript to crash due to an ICC profile being freed whilst a<br>
+ reference was still being held for it. That was not counting up a reference<br>
+ count when restoring the device profile back to a previous value.<br>
+<br>
+ Fixing that introduced a leak for other profiles. And that turned out to be<br>
+ not decrementing the reference count when replacing a device profile.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-28 10:21: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=d2fa2e186a6cdbdc011a44275532e2f1071111ec">d2fa2e186a6cdbdc011a44275532e2f1071111ec</a>
+<blockquote>
+<p>
+ Work around for (I think) a VS2019 optimiser bug<br>
+<br>
+ VS2019 release builds crash with the input file from bug 702916 and several<br>
+ other files, in copied_glyph_slot() because the pointer retrieved and stored<br>
+ in *pslot is non-sensical.<br>
+<br>
+ Debug/Profile builds and optimised builds with earler VS versions don't show<br>
+ the problem.<br>
+<br>
+ Adding debug code to assign the calculated index to an interim unsigned integer<br>
+ variable also cause the problem to go away.<br>
+<br>
+ So, use that as a workaround.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-28 10:20: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=cd36db788b73674e9a18803f451ed910ddd66dba">cd36db788b73674e9a18803f451ed910ddd66dba</a>
+<blockquote>
+<p>
+ Fix some casting confusion for special glyph CID/index values<br>
+<br>
+ And a whitespace/indentation issue.<br>
+<br>
+ Noticed in passing....<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-25 13:03:40 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=787be772d87089ee8224b17ba50ac4adccc75ffe">787be772d87089ee8224b17ba50ac4adccc75ffe</a>
+<blockquote>
+<p>
+ Fix Bug 702941 - Mispelled PDF interpreter variable name.<br>
+<br>
+ s/RepiredAnError/RepairedAnError/ A simple typo that was missed because<br>
+ we did not have a test file with a format error to trigger this code.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-25 08:41: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=4f9cce5953cae92014ef6652894c183080dd5d19">4f9cce5953cae92014ef6652894c183080dd5d19</a>
+<blockquote>
+<p>
+ Version, doc and date updates for 9.53.2<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-25 12:40: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=167c75d35336fcfe7c94cf5fb0258406443cdc6b">167c75d35336fcfe7c94cf5fb0258406443cdc6b</a>
+<blockquote>
+<p>
+ Bug 702938: Allocating cached glyphs, account for alignment<br>
+<br>
+ For efficiency, the glyph cache allocates &quot;large&quot; blocks of memory into which<br>
+ it parcels out offsets for individual glyph cache bitmaps, as required.<br>
+<br>
+ Since cached glyphs are usually fairly small, and potentially can be short<br>
+ lived, this saves the overheads of &quot;full&quot; memory for every cached glyph.<br>
+<br>
+ Unfortunately, in calculating the offsets for the cached glyph, it was failing<br>
+ to account for the required alignment of the system. In any environment that<br>
+ strictly enforces aligned memory accesses, this will potentially cause a bus<br>
+ error.<br>
+<br>
+ In this case, it was switching the gs_glyph type to a 64 bit type that triggered<br>
+ the issue. But any changed to the contents of the cached_char struct could have<br>
+ resulted in it happening.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 19:08: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=104dffc4aec03598257c14ab33b292c8e7149d59">104dffc4aec03598257c14ab33b292c8e7149d59</a>
+<blockquote>
+<p>
+ Remove links to ghostscript.com/release_history.html<br>
+<br>
+ That page is now gone.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-24 17:10:21 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b1c4631aa8910f6da923367984491fc2b883d7a0">b1c4631aa8910f6da923367984491fc2b883d7a0</a>
+<blockquote>
+<p>
+ Remove dead end links from Readme.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-23 20:20: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=334f24a4a8529f8476dfe74dd2b47f1274269263">334f24a4a8529f8476dfe74dd2b47f1274269263</a>
+<blockquote>
+<p>
+ Bug 702920: Fix type confusion in new param type code.<br>
+<br>
+ In a few cases we were using the wrong element in the union to read the<br>
+ value back from the param list (and to range check the values).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-15 08:51:08 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ab2505e19cf36ffc780f6824a50c8e7eacf7af8f">ab2505e19cf36ffc780f6824a50c8e7eacf7af8f</a>
+<blockquote>
+<p>
+ Fix problem with BGPrint and multi-threaded rendering caused by commit cca27988<br>
+<br>
+ The unconditional call to enable multi-threaded rendering during set up of the<br>
+ gx_device_printer as a clist caused the SEGV of bug 702181, but enabling<br>
+ multi-threaded rendering here isn't correct since it is usually done when we<br>
+ output the page (gdev_prn_output_page_aux). The problem is that BGPrint would<br>
+ setup a new clist device to render the page, but needs to enable multi-threaded<br>
+ rendering for the background clist device. Do this if NumRenderThreads &gt; 0.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-22 13:10:04 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a7d7b4f9ea347de35cbbec69a58c3a0a43fda447">a7d7b4f9ea347de35cbbec69a58c3a0a43fda447</a>
+<blockquote>
+<p>
+ Fix gp_file allocations to use thread_safe_memory.<br>
+<br>
+ The gpmisc.c does allocations for gp_file objects and buffers used by<br>
+ gp_fprintf, as well as gp_validate_path_len. The helgrind run with<br>
+ -dBGPrint -dNumRenderingThreads=4 and PCL input showed up the gp_fprintf<br>
+ problem since the clist rendering would call gp_fprintf using the same<br>
+ allocator (PCL's chunk allocator which is non_gc_memory). The chunk<br>
+ allocator is intentionally not thread safe (for performance).<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-23 07:39:04 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7a3f5d5ab9cc94ee433dafb5331519855f6671e6">7a3f5d5ab9cc94ee433dafb5331519855f6671e6</a>
+<blockquote>
+<p>
+ Temporarily disable BGPrint for pcl, xps and gpdl.<br>
+<br>
+ In order to safely allow for a 9.53.2 patch release that fixes BGPrint<br>
+ with NumRenderingThreads while the issues with PCL and friends are<br>
+ fixed, just ignore BGPrint in pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-16 07:48: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=7250256e29355b1ceccd06b3b937b7d0e739d1f7">7250256e29355b1ceccd06b3b937b7d0e739d1f7</a>
+<blockquote>
+<p>
+ Bug 702904: Another fix to check for shared libjpeg/libtiff<br>
+<br>
+ We cannot combine shared and not shared libjpeg and libtiff - they either both<br>
+ need to be &quot;local&quot; or both shared, and configure checks that and fails when<br>
+ the two are incompatible.<br>
+<br>
+ However, that check would fail when either libjpeg or libtiff were not being<br>
+ included at all. Since it is libtiff that is the &quot;problem&quot; for this<br>
+ compatibility, now check if TIFF is included, and if not, skip the check.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-25 16:47:10 +0100
+</strong>
+<br>ChrisL &lt;cliddell@salvor-openbsd.lan&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1264b6debb1d48e2b9ea0eae8fda86c04f4def9d">1264b6debb1d48e2b9ea0eae8fda86c04f4def9d</a>
+<blockquote>
+<p>
+ Fix the OpenBSD build<br>
+<br>
+ Whilst hopefully not breaking the buildroot build.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-14 16:52: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=6011a3d8096c51ae795b436f17b141cceba4d77b">6011a3d8096c51ae795b436f17b141cceba4d77b</a>
+<blockquote>
+<p>
+ Bug 702901: initialize directory for tiff configure<br>
+<br>
+ Previously the directory in which to run the libtiff configure script was<br>
+ initialised to an empty string, but that, in some toolchains, resulted in an<br>
+ error due to &quot;unsafe header/library path used in cross-compilation&quot;.<br>
+<br>
+ So initialise it something benign instead.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 09:01:02 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0712379d88c2697fef35e60107bf0201a5f1a790">0712379d88c2697fef35e60107bf0201a5f1a790</a>
+<blockquote>
+<p>
+ Coverity ID 361427 fix uninitialised variable.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-14 14:12:23 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=09763e4d082755436bb36bbef912193357058535">09763e4d082755436bb36bbef912193357058535</a>
+<blockquote>
+<p>
+ Update docs for 9.53.1 release<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-14 14:32: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=6d1440b2dabde655a2fe48ddbf0c09a82de4d423">6d1440b2dabde655a2fe48ddbf0c09a82de4d423</a>
+<blockquote>
+<p>
+ Fix crashes with pdfwrite, TrueType input fonts and Windows 64-bit build<br>
+<br>
+ With the change to 64-bits unconditionally for gs_glyph we can now<br>
+ define GS_MIN_CID_GLYPH in 64-bit terms.<br>
+<br>
+ Previously we were using the architecture size of a long_long to<br>
+ determine which define to use, and we do not define long_long on Windows<br>
+ leading to us using an essentially 32-bit definition. This caused<br>
+ indexing off the end of an array in copied_glyph_slot()<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-14 09:40: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=e54e9c5eaebc0bf06e57f754a3c16278de412459">e54e9c5eaebc0bf06e57f754a3c16278de412459</a>
+<blockquote>
+<p>
+ Bug 702897: Fix shared libtiff/libjpeg check<br>
+<br>
+ For various reasons we cannot combine shared and not shared libjpeg and<br>
+ libtiff - they either both need to be &quot;local&quot; or both shared.<br>
+<br>
+ But the check for that compatibility was triggered during the recursive<br>
+ configure call when setting up for cross compiling.<br>
+<br>
+ Skip the check for that recursive configure call.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 16:18: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=f157ed49512438c95635e6340933bbcb14cea524">f157ed49512438c95635e6340933bbcb14cea524</a>
+<blockquote>
+<p>
+ Tweak History9.htm with jbig2dec updates<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 22:47:09 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9a5ace846c8af91d047e59c87722d0c36e79e5d3">9a5ace846c8af91d047e59c87722d0c36e79e5d3</a>
+<blockquote>
+<p>
+ Bug 702884: Require jbig2dec 0.19 when building ghostscript.<br>
+<br>
+ In practice this has been required since commit<br>
+ 9b5008aa2bc1c6a6acb2c6f90d1ef8d6bad9e66a.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 22:41:20 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=53db58bd227c80375f00135045d36b66868732f4">53db58bd227c80375f00135045d36b66868732f4</a>
+<blockquote>
+<p>
+ Update jbig2dec stuff for 0.19 release.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-10 08:49:46 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1af88d327daa9392f5c6542dc7e247ddab7c9b0b">1af88d327daa9392f5c6542dc7e247ddab7c9b0b</a>
+<blockquote>
+<p>
+ Docs and dates for 9.53.0<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-09-09 11:50: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=45884ca68488ac470b894702bdd8da232743d8e4">45884ca68488ac470b894702bdd8da232743d8e4</a>
+<blockquote>
+<p>
+ Bug 702871: Fix GraphicsAlphaBits + Fill/Stroke issue.<br>
+<br>
+ When we flush the alphabuffer, mapped_start and mapped_height are<br>
+ both set to zero. When we refill it, mapped_height is set to<br>
+ non-zero. USUALLY mapped_start is set to non-zero too, but it can<br>
+ be set to zero when we are close to the bottom of the page.<br>
+<br>
+ Hence we should test for mapped_height != 0, rather than both<br>
+ mapped_height and mapped_start being non-zero.<br>
+<br>
+ So the 'quick hack' that Chris used is actually correct.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-28 09:31: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=4ba6aa1d7253e8ecd7cd796c95306f1203f70879">4ba6aa1d7253e8ecd7cd796c95306f1203f70879</a>
+<blockquote>
+<p>
+ Bug 702837 typo in warning message<br>
+<br>
+ Thanks to Herbert Voss for spotting this. Fixed the typo and updated the<br>
+ version number in the warning from 9.53 to 9.53.0 to match the actual<br>
+ version and patch number of the release (the decision to add the patch<br>
+ level was taken after the original commit)<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-27 09:35: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=bd6b59984ad713d2b1d48f3b81bf1e631bf9ee2b">bd6b59984ad713d2b1d48f3b81bf1e631bf9ee2b</a>
+<blockquote>
+<p>
+ Update dates'n'docs for 9.53.0.RC2<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 18:55:30 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=197eb511b5d81a662f801333709199495abe61cf">197eb511b5d81a662f801333709199495abe61cf</a>
+<blockquote>
+<p>
+ Fix Tesseract traineddata file loading.<br>
+<br>
+ If it was finding any Tesseract data in ROM it was then not looking<br>
+ for files.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-24 09:24: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=cb279d8a0e356542f6829ed429269ce07ec838a9">cb279d8a0e356542f6829ed429269ce07ec838a9</a>
+<blockquote>
+<p>
+ Coverity 361429: move &quot;break&quot; to correct place.<br>
+<br>
+ We had to add the outputfile to the &quot;control&quot; file permission list (as well<br>
+ as write), but for the &quot;pipe&quot; case, I accidentally added the call after the<br>
+ break out of loop that checks for a pipe.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-21 18:50: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=bad72741aad21b17a3965673f3e7949a2fc7c256">bad72741aad21b17a3965673f3e7949a2fc7c256</a>
+<blockquote>
+<p>
+ PDF interp: Consolidate disabling of page handler device<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-21 11:13: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=60bbe61efc97c208f31c2d2d617753232ed1881d">60bbe61efc97c208f31c2d2d617753232ed1881d</a>
+<blockquote>
+<p>
+ More version number fixes<br>
+<br>
+ The code to retrieve the Ghostscript paths from the Windows Registry<br>
+ was generating a key based on the version number, but since we added the<br>
+ patch the generation was incorrect.<br>
+<br>
+ Since this is the third (!) case of this, scan the code for any usage of<br>
+ gs_version, gs_version_number, GS_VERSION, GS_VERSION_NUMBER,<br>
+ gs_revision, gs_revision_number, GS_REVISION and GS_REVISION_NUMBER.<br>
+<br>
+ This reveals two more places, neither serious but we might as well fix<br>
+ them while we're here.<br>
+<br>
+ Thanks to Akira Kakuto for finding this problem and suggesting a patch.<br>
+ I chose to use the code we were already using in two other places, just<br>
+ for consistency, but the supplied patch was equally good.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-21 08:14: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=45baf1a5b71c2ddad8e16ae2f895c4244e6af9e6">45baf1a5b71c2ddad8e16ae2f895c4244e6af9e6</a>
+<blockquote>
+<p>
+ Fox typos and stuff in the release highlights<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 18:33: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=58ea17fd3032584e04f4e844e2d9991af87f114e">58ea17fd3032584e04f4e844e2d9991af87f114e</a>
+<blockquote>
+<p>
+ Delete binary files from lcms2mt tree<br>
+<br>
+ There were left over binary libraries, remove them.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 17:19:09 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2ddd9d68bb0831ec8c9dd5e4e2e94bb44f8e5028">2ddd9d68bb0831ec8c9dd5e4e2e94bb44f8e5028</a>
+<blockquote>
+<p>
+ Fix pdfwrite &quot;%d&quot; mode with file permissions<br>
+<br>
+ Firstly, in gx_device_delete_output_file the iodev pointer was being passed<br>
+ to the delete_method incorrectly (passing a pointer to that pointer). Thus<br>
+ when we attempted to use that to confirm permission to delete the file, it<br>
+ crashed. Credit to Ken for finding that.<br>
+<br>
+ Secondly, due to the way pdfwrite works, when running with an output file per<br>
+ page, it creates the current output file immediately it has completed writing<br>
+ the previous one. Thus, it has to delete that partial file on exit.<br>
+<br>
+ Previously, the output file was not added to the &quot;control&quot; permission list,<br>
+ so an attempt to delete it would result in an error. So add the output file<br>
+ to the &quot;control&quot; as well as &quot;write&quot; list.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-18 10:23: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=a12a526799a32c9fc17c7f6c5f37e21246e2d4e7">a12a526799a32c9fc17c7f6c5f37e21246e2d4e7</a>
+<blockquote>
+<p>
+ Update docs, version, dates, product family<br>
+<br>
+ for 9.53.0 RC1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-20 09:12: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=f797ac99d0b0a337b5a57c37cdd026f4a9dbf897">f797ac99d0b0a337b5a57c37cdd026f4a9dbf897</a>
+<blockquote>
+<p>
+ Fix PDF /Producer for new patch level<br>
+<br>
+ Bug #702772 &quot;Strange /Producer attribute&quot;<br>
+<br>
+ The change to include a patch level for Ghostscript in the gs_revision<br>
+ value wasn't being reflected in the code to generate the version<br>
+ number used in the PDF /Producer string.<br>
+<br>
+ Copied the code from printf_program_ident() in base/gsmisc.c to the<br>
+ code in pdf_store_default_Producer() and commented both pieces of code<br>
+ to note the existence of each other so that in future hopefully we won't<br>
+ forget to keep them in sync.<br>
+<br>
+ Thanks to Peter Cherepanov for spotting the flaw.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-18 23:23:40 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ec82d2aa95dc8eb764483ff9011585bfc47a0f1b">ec82d2aa95dc8eb764483ff9011585bfc47a0f1b</a>
+<blockquote>
+<p>
+ Fix Bug 702381: Hang due to cyclic PDF resources.<br>
+<br>
+ The loop is caused by a circular /ParentResources attribute.<br>
+ This branch of code is triggered by an error in the sample file:<br>
+ misplaced /Form resources in a Type 3 font. This font has /Resource<br>
+ dictionaries added to /CharProcs entries rather than the font dictionary.<br>
+<br>
+ Note that this patch fixes the hang issue, but does not correct the<br>
+ issue of not being able to find the correct resource (in the CharProc)<br>
+ so that the file still output does not match Adobe (mupdf has that<br>
+ same issue).<br>
+<br>
+ Thanks to Peter Cherepanov for this patch.<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-17 15:44: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=a01320e4d57d984f5bf65126534dbb3c33b416a4">a01320e4d57d984f5bf65126534dbb3c33b416a4</a>
+<blockquote>
+<p>
+ Bug 702744: Add windows utf-8 handling for unlink and rename.<br>
+<br>
+ To do this, we introduce gp_unlink and gp_rename, and call those<br>
+ as appropriate.<br>
+<br>
+ Also, make gp_open_scratch_file add the file to the permit list.<br>
+ When such a file is closed, it will be deleted from the permit list.<br>
+<br>
+ It will also be removed from the permit list if the file is deleted<br>
+ using the PS deletefile operator.<br>
+<br>
+ On closedown, if scratch files haven't been deleted, then we'll<br>
+ delete them as part of the closedown of gs_lib_ctx.<br>
+<br>
+ This means that 'purging' the control lists must not remove scratch<br>
+ file paths from the list.<br>
+<br>
+ Also, ensure that gsapi callers can't maliciously (or accidentally)<br>
+ remove scratch path paths from the list so as to leave them around<br>
+ after closedown.<br>
+<p>
+</blockquote>
+<hr>
+<hr size=20>
<h3><a name="9.53.3_changelog"></a>Changelog</h3>
<p><strong>2020-09-28 12:54:48 +0100
</strong>
@@ -242278,7 +250672,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Install.htm b/doc/Install.htm
index 43fa496b1..c3da7e604 100644
--- a/doc/Install.htm
+++ b/doc/Install.htm
@@ -430,7 +430,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Internal.htm b/doc/Internal.htm
index 010c846bf..0361a485b 100644
--- a/doc/Internal.htm
+++ b/doc/Internal.htm
@@ -108,7 +108,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Language.htm b/doc/Language.htm
index f9b86a0cf..51965ae66 100644
--- a/doc/Language.htm
+++ b/doc/Language.htm
@@ -2060,7 +2060,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Lib.htm b/doc/Lib.htm
index 8d9689564..c5fed2c4b 100644
--- a/doc/Lib.htm
+++ b/doc/Lib.htm
@@ -1037,7 +1037,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Make.htm b/doc/Make.htm
index 3fe0bdc55..b8be1e180 100644
--- a/doc/Make.htm
+++ b/doc/Make.htm
@@ -1462,7 +1462,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/News.htm b/doc/News.htm
index 89a37ff4f..b73856a5a 100644
--- a/doc/News.htm
+++ b/doc/News.htm
@@ -85,84 +85,58 @@ overview</a>.
<!-- [1.0 end visible header] ============================================== -->
<!-- [2.0 begin contents] ================================================== -->
-<h2><a name="Version9.53.3"></a>Version 9.53.3 (2020-10-01)</h2>
+<h2><a name="Version9.54.0"></a>Version 9.54.0 (2021-03-30)</h2>
+<p>The 9.54.0 release is a maintenance release, and also adds new functionality.
+<br>
<p> Highlights in this release include:
<ul>
<li>
-<p>The 9.53.3 release is primarily maintenance.
-</li>
-<li>
-<p>Issues arose with 9.53.0/1/2 that prompted the release of a <code>.3</code> patch:
-<ul>
-<li>A crash (or silent, erroneous exit) on 64 bit Windows and other LLP64 type environments.</li>
-<li>What appears to be a compiler optimiser bug in 64 bit Windows builds with Visual Studio 2019</li>
-<li>A crash related to management of ICC profile objects</li>
-<li>A crash on SPARC hardware due to an alignment mismatch in the bitmap cache</li>
-<li>A parameter type mismatch that would cause Ghostscript to error out during initialisation,
-which affected 64 big, big endian architectures.</li>
-<li>An unexpected side effect of another change that prevented multithreaded rendering and background
-rendering from working correctly.</li>
-</ul>
-<p>Details of those can be found in the changelog.
+<p>Overprint simulation is now available to all output devices, allowing
+quality previewing/proofing of PostScript and PDF jobs that rely on overprint.
+See the <code>-dOverprint</code> option documentation in:
+<a href="Use.htm#Overprint">Overprint</a>
</li>
<li>
-<p>The most obvious change is the (re-)introduction of the patch level to the version number,
-this helps facilitate a revised policy on handling security related issues.
-<p>To clarify: in the event we decide to release a patch revision, it will <em>replace</em> the release
-with the previous patch number. Release notes, highlights and warnings will remain the same, except for the
-addition of whatever fix(es) prompted the patch.
+<p>The &quot;docxwrite&quot; device adds the ability to output to Microsoft Word
+&quot;docx&quot; format. See: <a href="VectorDevices.htm#DOCX">docxwrite</a>
</li>
<li>
-<p>Our efforts in code hygiene and maintainability continue.
-</li>
-<li>
-<p>We have added the capability to build with the Tesseract OCR engine. In such
-a build, new devices are available (pdfocr8/pdfocr24/pdfocr32) which render the
-output file to an image, OCR that image, and output the image "wrapped" up as a
-PDF file, with the OCR generated text information included as "invisible" text
-(in PDF terms, text rendering mode 3).
-<p>Due to some patches to the Tesseract sources that are required (integrated
-upstream, but awaiting release), time constraints, and the experimental nature
-of the feature, we only support including Tesseract from source, not linking to
-Tesseract shared libraries. Whether we add this capability will be largely
-dependant on community demand for the feature.
-<p>See <a href="https://www.ghostscript.com/ocr.html">Enabling OCR</a> for more details.
+<p>The pdfwrite device is now capable of using the Tesseract OCR engine when it is
+built into Ghostscript to improve searchability and copy and paste functionality when
+the input lacks the metadata for that purpose. See: <a href="VectorDevices.htm#UseOCR">UseOCR</a>
</li>
<li>
-<p>We have added Python bindings for the <code>gsapi</code> interface, can be found
-in <code>demos/python</code>. These are experimental, and we welcome feedback from
-interested developers.
+<p>Ghostscript/GhostPDL now includes a &quot;map text to black&quot;
+function, where text drawn by an input job (except when drawn using a
+Type 3 font) can be forced to draw in solid black. See:
+<a href="Use.htm#BlackText">BlackText</a>
</li>
<li>
-<p>For those integrating Ghostscript/GhostPDL via the <code>gsapi</code> interface, we
-have added new capabilities to that, specifically in terms of setting and interrogating
-device parameters. These, along with the existing interface calls, are documented in:
-<a href="API.htm">Ghostscript Interpreter API</a>
+<p>Ghostscript/GhostPDL now supports simple N-up imposition &quot;internally&quot;. See:
+<a href="Use.htm#NupControl">NupControl</a>
</li>
<li>
-<p><b>IMPORTANT:</b> In consultation with a representative of
-(<a href="http://www.openprinting.org">OpenPrinting</a>) it is
-our intention to deprecate and, in the not distant future, remove the
-OpenPrinting Vector/Raster Printer Drivers (that is, the <code>opvp</code>
-and <code>oprp</code> devices).
-<p> If you rely on either of these devices, <b><i>please</i></b> get in touch with
-us, so we can discuss your use case, and revise our plans accordingly.
+<p>Our efforts in code hygiene and maintainability continue.
</li>
<li>
-<p>IMPORTANT: We have forked LittleCMS2 into LittleCMS2mt (the "mt" indicating "multi-thread").
-LCMS2 is not thread safe and cannot be made thread safe without breaking the ABI. Our fork
-will be thread safe and include performance enhancements (these changes have all be been
-offered and rejected upstream). We will maintain compatibility between Ghostscript and LCMS2
-for a time, but not in perpetuity. If there is sufficient interest, our fork will be
-available as its own package separately from Ghostscript (and MuPDF).
+<p>The usual round of bug fixes, compatibility changes, and incremental improvements.
</li>
<li>
-<p>The usual round of bug fixes, compatibility changes, and incremental improvements.
+<p>(9.53.0) We have added the capability to build with the Tesseract OCR engine. In such
+a build, new devices are available (pdfocr8/pdfocr24/pdfocr32) which render the
+output file to an image, OCR that image, and output the image "wrapped" up as a
+PDF file, with the OCR generated text information included as "invisible" text
+(in PDF terms, text rendering mode 3).
+<p>Mainly due to time constraints, we only support including Tesseract from
+source included in our release packages, and not linking to Tesseract/Leptonica
+shared libraries. Whether we add this capability will be largely dependent on
+community demand for the feature.
+<p>See <a href="https://www.ghostscript.com/ocr.html">Enabling OCR</a> for more details.
</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.52_Incompatible_changes"></a>Incompatible changes</h3>
+<h3><a name="9.54.0_Incompatible_changes"></a>Incompatible changes</h3>
<h4>Included below are incompatible changes from recent releases (the
specific release in question listed in parentheses). We include these,
for now, as we are aware that not everyone upgrades with every release.</h4>
@@ -213,7 +187,7 @@ alternative solution or return the previous functionality, if there is genuinely
option.
</li>
</ul>
-<h3><a name="9.53.3_changelog"></a>Changelog</h3>
+<h3><a name="9.54.0_changelog"></a>Changelog</h3>
<p>See the <a href="History9.htm">history file</a> for complete log
of changes.
@@ -238,7 +212,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Ps-style.htm b/doc/Ps-style.htm
index 5f69bb8b2..84f7dd43f 100644
--- a/doc/Ps-style.htm
+++ b/doc/Ps-style.htm
@@ -539,7 +539,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Ps2epsi.htm b/doc/Ps2epsi.htm
index 8803d3b3a..7a545a9ca 100644
--- a/doc/Ps2epsi.htm
+++ b/doc/Ps2epsi.htm
@@ -219,7 +219,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Psfiles.htm b/doc/Psfiles.htm
index 71cfbc285..07cccb256 100644
--- a/doc/Psfiles.htm
+++ b/doc/Psfiles.htm
@@ -884,7 +884,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Readme.htm b/doc/Readme.htm
index ac4d5be73..de4d7e7ea 100644
--- a/doc/Readme.htm
+++ b/doc/Readme.htm
@@ -569,7 +569,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Release.htm b/doc/Release.htm
index d0840cdde..4d10992d4 100644
--- a/doc/Release.htm
+++ b/doc/Release.htm
@@ -835,7 +835,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/SavedPages.htm b/doc/SavedPages.htm
index c91db605b..383548b6f 100644
--- a/doc/SavedPages.htm
+++ b/doc/SavedPages.htm
@@ -307,7 +307,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Source.htm b/doc/Source.htm
index 406220029..e998bf785 100644
--- a/doc/Source.htm
+++ b/doc/Source.htm
@@ -455,7 +455,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Unix-lpr.htm b/doc/Unix-lpr.htm
index b7f5a01f8..ce3bc4d3c 100644
--- a/doc/Unix-lpr.htm
+++ b/doc/Unix-lpr.htm
@@ -294,7 +294,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/Use.htm b/doc/Use.htm
index c9118a254..64339dfce 100644
--- a/doc/Use.htm
+++ b/doc/Use.htm
@@ -2629,6 +2629,7 @@ processing of PostScript source files. Note: in releases 7.30 and
earlier, processing of DoPS was always enabled.</dd>
</dl>
+<a name="BlackText"></a>
<dl>
<dt><code>-dBlackText</code></dt>
<dd>Forces text to be drawn with black. This occurs for text fill and
@@ -5366,7 +5367,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/VectorDevices.htm b/doc/VectorDevices.htm
index 9826d95ea..c457150ea 100644
--- a/doc/VectorDevices.htm
+++ b/doc/VectorDevices.htm
@@ -1473,7 +1473,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/WhatIsGS.htm b/doc/WhatIsGS.htm
index 5021ccc2c..ed897ad2a 100644
--- a/doc/WhatIsGS.htm
+++ b/doc/WhatIsGS.htm
@@ -169,7 +169,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/gs-vms.hlp b/doc/gs-vms.hlp
index e85c83d6d..36eaa74e8 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.53.3, 1 October 2020
+! Ghostscript version 9.54.0, 30 March 2021
Usage:
$ gs [options] [file ...]
diff --git a/doc/sample_downscale_device.htm b/doc/sample_downscale_device.htm
index a1b0ebf1a..31340887d 100644
--- a/doc/sample_downscale_device.htm
+++ b/doc/sample_downscale_device.htm
@@ -253,7 +253,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
<!--FINISH EDITING HERE-->
diff --git a/doc/subclass.htm b/doc/subclass.htm
index 731bee2d9..09dc94039 100644
--- a/doc/subclass.htm
+++ b/doc/subclass.htm
@@ -802,7 +802,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/doc/thirdparty.htm b/doc/thirdparty.htm
index 3ab18cd33..fca4ca7df 100644
--- a/doc/thirdparty.htm
+++ b/doc/thirdparty.htm
@@ -223,7 +223,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.53.3, 1 October 2020
+<small>Ghostscript version 9.54.0, 30 March 2021
<!-- [3.0 end visible trailer] ============================================= -->
diff --git a/man/dvipdf.1 b/man/dvipdf.1
index a38d4302e..f0afa248e 100644
--- a/man/dvipdf.1
+++ b/man/dvipdf.1
@@ -1,4 +1,4 @@
-.TH DVIPDF 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH DVIPDF 1 "30 March 2021" 9.54.0 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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/gs.1 b/man/gs.1
index d5c007195..86763afbf 100644
--- a/man/gs.1
+++ b/man/gs.1
@@ -1,4 +1,4 @@
-.TH GS 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH GS 1 "30 March 2021" 9.54.0 Ghostscript \" -*- nroff -*-
.SH NAME
gs \- Ghostscript (PostScript and PDF language interpreter and previewer)
.SH SYNOPSIS
@@ -423,7 +423,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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the primary maintainers
of Ghostscript.
diff --git a/man/gslp.1 b/man/gslp.1
index eb3c5d685..50953bfb3 100644
--- a/man/gslp.1
+++ b/man/gslp.1
@@ -1,4 +1,4 @@
-.TH GSLP 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH GSLP 1 "30 March 2021" 9.54.0 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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/gsnd.1 b/man/gsnd.1
index 1acafcf1b..c3097fcf2 100644
--- a/man/gsnd.1
+++ b/man/gsnd.1
@@ -1,4 +1,4 @@
-.TH GSND 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH GSND 1 "30 March 2021" 9.54.0 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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/pdf2dsc.1 b/man/pdf2dsc.1
index 5c1c9de04..5973d4947 100644
--- a/man/pdf2dsc.1
+++ b/man/pdf2dsc.1
@@ -1,4 +1,4 @@
-.TH PDF2DSC 1 "1 October 2020" 9.53.3 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDF2DSC 1 "30 March 2021" 9.54.0 "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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.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 f2df28040..899ad6e4d 100644
--- a/man/pdf2ps.1
+++ b/man/pdf2ps.1
@@ -1,4 +1,4 @@
-.TH PDF2PS 1 "1 October 2020" 9.53.3 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDF2PS 1 "30 March 2021" 9.54.0 "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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/pf2afm.1 b/man/pf2afm.1
index f7c75386f..5173ea085 100644
--- a/man/pf2afm.1
+++ b/man/pf2afm.1
@@ -1,4 +1,4 @@
-.TH PF2AFM 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH PF2AFM 1 "30 March 2021" 9.54.0 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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/pfbtopfa.1 b/man/pfbtopfa.1
index 2869b0e64..cc18c39aa 100644
--- a/man/pfbtopfa.1
+++ b/man/pfbtopfa.1
@@ -1,4 +1,4 @@
-.TH PFBTOPFA 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH PFBTOPFA 1 "30 March 2021" 9.54.0 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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/printafm.1 b/man/printafm.1
index 790b83bdd..698ee63ae 100644
--- a/man/printafm.1
+++ b/man/printafm.1
@@ -1,4 +1,4 @@
-.TH PRINTAFM 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH PRINTAFM 1 "30 March 2021" 9.54.0 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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/ps2ascii.1 b/man/ps2ascii.1
index f22f9f9a0..613ed95dc 100644
--- a/man/ps2ascii.1
+++ b/man/ps2ascii.1
@@ -1,4 +1,4 @@
-.TH PS2ASCII 1 "1 October 2020" 9.53.3 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2ASCII 1 "30 March 2021" 9.54.0 "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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/ps2epsi.1 b/man/ps2epsi.1
index 162100dc1..abae65b75 100644
--- a/man/ps2epsi.1
+++ b/man/ps2epsi.1
@@ -1,4 +1,4 @@
-.TH PS2EPSI 1 "1 October 2020" 9.53.3 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2EPSI 1 "30 March 2021" 9.54.0 "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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
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 9aad72946..9fc62fad7 100644
--- a/man/ps2pdf.1
+++ b/man/ps2pdf.1
@@ -1,4 +1,4 @@
-.TH PS2PDF 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH PS2PDF 1 "30 March 2021" 9.54.0 Ghostscript \" -*- nroff -*-
.SH NAME
ps2pdf \- Convert PostScript to PDF using ghostscript
.br
@@ -89,7 +89,7 @@ VectorDevices.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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/ps2pdfwr.1 b/man/ps2pdfwr.1
index f75d0bb39..7e878f078 100644
--- a/man/ps2pdfwr.1
+++ b/man/ps2pdfwr.1
@@ -1,4 +1,4 @@
-.TH PS2PDFWR 1 "1 October 2020" 9.53.3 Ghostscript \" -*- nroff -*-
+.TH PS2PDFWR 1 "30 March 2021" 9.54.0 Ghostscript \" -*- nroff -*-
.SH NAME
ps2pdfwr \- Convert PostScript to PDF without specifying CompatibilityLevel, using ghostscript
.SH SYNOPSIS
@@ -24,7 +24,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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.
diff --git a/man/ps2ps.1 b/man/ps2ps.1
index 69a6ea165..3ed02f4e5 100644
--- a/man/ps2ps.1
+++ b/man/ps2ps.1
@@ -1,4 +1,4 @@
-.TH PS2PS 1 "1 October 2020" 9.53.3 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2PS 1 "30 March 2021" 9.54.0 "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.53.3.
+This document was last revised for Ghostscript version 9.54.0.
.SH AUTHOR
Artifex Software, Inc. are the
primary maintainers of Ghostscript.