summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/History9.htm')
-rw-r--r--doc/History9.htm13453
1 files changed, 13441 insertions, 12 deletions
diff --git a/doc/History9.htm b/doc/History9.htm
index ac20b01e..20e67642 100644
--- a/doc/History9.htm
+++ b/doc/History9.htm
@@ -1,15 +1,6 @@
<!doctype html>
<html>
<head>
-<!-- Global site tag (gtag.js) - Google Analytics -->
-<script async src="https://www.googletagmanager.com/gtag/js?id=UA-54391264-2"></script>
-<script>
- window.dataLayer = window.dataLayer || [];
- function gtag(){dataLayer.push(arguments);}
- gtag('js', new Date());
-
- gtag('config', 'UA-54391264-2');
-</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro" rel="stylesheet">
@@ -79,7 +70,8 @@ TOC to see how to edit it for visual conciseness.
<h2>Table of contents</h2>
<blockquote><ul>
-<li><a href="#Version9.51">Version 9.52 (2020-03-19)</a>
+<li><a href="#Version9.53.0">Version 9.53.0 (2020-09-10)</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>
<li><a href="#Version9.27">Version 9.27 (2019-04-03)</a>
<li><a href="#Version9.26">Version 9.26 (2018-11-20)</a>
@@ -134,6 +126,13443 @@ overview</a>.
<!-- [1.0 end visible header] ============================================== -->
<!-- [2.0 begin contents] ================================================== -->
+<h2><a name="Version9.53.0"></a>Version 9.53.0 (2020-09-10)</h2>
+<p> Highlights in this release include:
+<ul>
+<li>
+<p>The 9.53.0 release is primarily maintenance.
+</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.
+</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.
+</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.
+</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).
+</li>
+<li>
+<p>The usual round of bug fixes, compatibility changes, and incremental improvements.
+</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>
+<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>
+<ul>
+<li>
+<p>(9.53.0) As of 9.53.0, we have (re-)introduced the patch level to the version number,
+this helps facilitate a revised policy on handling security related issues.
+<p><strong>Note for GSView Users:</strong>The patch level addition breaks GSView 5 (it is
+hardcoded to check for versions <code>704-999</code>. It is possible, but not guaranteed that
+a GSView update might be forthcoming to resolve this.
+</li>
+<li>
+<p>(9.52) As of 9.52, the Windows binaries released by the Ghostscript development
+team are built with Microsoft Visual Studio 2019. As a result, Microsoft Windows XP and
+earlier are no longer supported by these binaries. This does not imply we are, or will
+start relying upon features only available in VS2019, so the <code>nmake</code> Makefiles
+will continue to allow older Visual Studio versions (back to VS2005) to build Ghostscript.
+</li>
+<li>
+<p>(9.52) <code>-dALLOWPSTRANSPARENCY</code>: The transparency compositor (and related
+features), whilst we are improving it, remains sensitive to being driven correctly, and
+incorrect use can have unexpected/undefined results. Hence, as part of improving security
+we limited access to these operators, originally using the <code>-dSAFER</code> feature.
+As we made "SAFER" the default mode, that became unacceptable, hence the new option
+<code>-dALLOWPSTRANSPARENCY</code> which enables access to the operators.
+</li>
+<li>
+<p>(9.50) There are a couple of subtle incompatibilities between the old and new SAFER
+implementations. Firstly, as mentioned in the 9.50 release notes, SAFER now leaves
+standard Postcript functionality unchanged (except for the file access limitations).
+Secondly, the interaction with <code>save</code>&sol;<code>restore</code> operations,
+see <a href="Use.htm#Safer">SAFER</a>.
+<p><strong>Important Note for Windows Users</strong>:
+<br>
+The file/path pattern matching is case sensitive, even on Windows. This is a
+change in behaviour compared to the old code which, on Windows, was case
+<i>in</i>sensitive. This is in recognition of changes in Windows behaviour,
+in that it now supports (although does not enforce) case sensitivity.
+</li>
+<li>
+<p>(9.27) The process of &quot;tidying&quot; the PostScript name space should have removed
+only non-standard and undocumented operators. Nevertheless, it is possible that
+any integrations or utilities that rely on those non-standard and undocumented
+operators may stop working or may change behaviour.
+<p>If you encounter such a case, please contact us (either the #ghostscript IRC channel,
+or the gs-devel mailing list would be best), and we'll work with you to either find an
+alternative solution or return the previous functionality, if there is genuinely no other
+option.
+<p>One case we know this has occurred is GSView 5 (and earlier). GSView 5 support for PDF
+files relied upon internal use only features which are no longer available. GSView 5 will
+still work as previously for PostScript files. For PDF files, users are encouraged to look
+at <a href="https://www.mupdf.com">MuPDF</a>.
+</li>
+</ul>
+<h3><a name="9.53.0_changelog"></a>Changelog</h3>
+<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>
+<br>
+configure.ac<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>
+<br>
+jbig2dec/CHANGES<br>
+jbig2dec/jbig2.h<br>
+jbig2dec/jbig2dec.1<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>
+<br>
+base/gdevabuf.c<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>
+<br>
+Resource/Init/pdf_main.ps<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>
+<br>
+base/tessocr.cpp<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>
+<br>
+base/gslibctx.c<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>
+<br>
+Resource/Init/pdf_main.ps<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>
+<br>
+base/gp_wgetv.c<br>
+devices/gdevpdfimg.c<br>
+devices/gdevpng.c<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>
+<br>
+doc/History9.htm<br>
+doc/News.htm<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>
+<br>
+lcms2mt/Lib/MS/lcms2_fast_float_plugin.lib<br>
+lcms2mt/Lib/MS/lcms2_static.lib<br>
+lcms2mt/Lib/MS/lcms2mt_fast_float_plugin.lib<br>
+lcms2mt/Lib/MS/lcms2mt_static.lib<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>
+<br>
+base/gsdevice.c<br>
+base/gslibctx.c<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=dee56822c0c9989fdf0115dab79842ad116c14f3">dee56822c0c9989fdf0115dab79842ad116c14f3</a>
+<blockquote>
+<p>
+ Update version, dates, product family<br>
+<br>
+ for 9.53.0 RC1<br>
+<br>
+base/gscdefs.h<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/gs-vms.hlp<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+man/dvipdf.1<br>
+man/gs.1<br>
+man/gslp.1<br>
+man/gsnd.1<br>
+man/pdf2dsc.1<br>
+man/pdf2ps.1<br>
+man/pf2afm.1<br>
+man/pfbtopfa.1<br>
+man/printafm.1<br>
+man/ps2ascii.1<br>
+man/ps2epsi.1<br>
+man/ps2pdf.1<br>
+man/ps2pdfwr.1<br>
+man/ps2ps.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>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>
+<br>
+base/gsmisc.c<br>
+devices/vector/gdevpdfu.c<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>
+<br>
+Resource/Init/pdf_base.ps<br>
+Resource/Init/pdf_main.ps<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>
+<br>
+base/gp.h<br>
+base/gp_mswin.c<br>
+base/gp_os2.c<br>
+base/gp_os2fs.c<br>
+base/gp_os2pr.c<br>
+base/gp_unifs.c<br>
+base/gp_vms.c<br>
+base/gp_winfs.c<br>
+base/gpmisc.c<br>
+base/gsiodev.c<br>
+base/gslibctx.c<br>
+base/gslibctx.h<br>
+base/mkromfs.c<br>
+base/winlib.mak<br>
+pcl/pl/pjparse.c<br>
+psi/imain.c<br>
+psi/zfile.c<br>
+xps/xpsjxr.c<br>
+xps/xpstop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-11 14:41:28 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0e98e2a27ed19fcc138215afe17ab1a173aeed7b">0e98e2a27ed19fcc138215afe17ab1a173aeed7b</a>
+<blockquote>
+<p>
+ Add patch version to version number<br>
+<br>
+ This makes it easier to issue patch releases for security problems.<br>
+<br>
+Resource/Init/gs_init.ps<br>
+base/gsmisc.c<br>
+base/version.mak<br>
+devices/gdevtifs.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-17 13:14:18 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7cfa8d364797aed267285124a32b5cc5e1cd4794">7cfa8d364797aed267285124a32b5cc5e1cd4794</a>
+<blockquote>
+<p>
+ Bug 702360: Allow @loader_path on darwin so build<br>
+<br>
+ As this is change in behaviour, it's optional. The configure script now<br>
+ uses (if set) a environment variable called &quot;DARWIN_LDFLAGS_SO_PREFIX&quot; -<br>
+ included &quot;DARWIN&quot; because it only applies to DARWIN derived systems.<br>
+<br>
+ This allows the caller to use:<br>
+ ./configure DARWIN_LDFLAGS_SO_PREFIX=&quot;@loader_path/&quot;<br>
+<br>
+ Thus meaning the build will use loader_path rather than &quot;@executable_path&quot;.<br>
+<br>
+ Configuring/building without that environment variable will retain the current<br>
+ behaviour.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-15 11:10: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=ffbd883cd13883ace8fb424a8a7c447084ea5fac">ffbd883cd13883ace8fb424a8a7c447084ea5fac</a>
+<blockquote>
+<p>
+ Enhance First/LastPage processing<br>
+<br>
+ Previously the FirstPage and LastPage processing device did not allow<br>
+ any means to reset the PageCount. This was because Ghostscript's<br>
+ command line processing does not permit changing non-PostScript<br>
+ controls (interpreter and some device parameters) after the first file<br>
+ has been run.<br>
+<br>
+ GPDL however, has a new mechanism 'set_param' which can be used<br>
+ programmatically, and that does permit for device and interpreter<br>
+ parameters to be altered after the initial file has been processed.<br>
+<br>
+ To allow for this the gdevflp device now processes parameters itself<br>
+ instead of relying on the underlying device to do so. The parameters<br>
+ FirstPage, LastPage, PageList and DisablePageHandler now all reset the<br>
+ page count to 0 when they are encountered. This means that, using gpdl,<br>
+ it is possible to select a set of pages from one file, then select a<br>
+ different set of pages from a second file. Sending any of these<br>
+ parameters (except, obviously DisablePageHandler) also now automatically<br>
+ enables the device again ie it sets DisablePageHandler to false.<br>
+<br>
+ It is not, unfortunately, possible to load the gdevflp device at any<br>
+ time except when the underlying device is initially opened. This means<br>
+ that if any file is to be processed using gdevflp the first file must<br>
+ use one of the parameters, in order to load gdevflp. The simplest<br>
+ solution is simply to set -dFirstPage=1 which will load the device and<br>
+ run all the pages from the file.<br>
+<br>
+ This commit also includes a minor change to the PDF interpreter. Because<br>
+ the PDF interpreter (currently) handles subsets of pages itself, it<br>
+ does not want the first/last page device to be active, so it<br>
+ disables the device by sending a 'DisablePageHandler' to it. However<br>
+ (because of the GS command line, as described in the first paragraph) it<br>
+ did not bother to re-enable the device. So here we add a line to<br>
+ re-enable the device after processing is complete.<br>
+<br>
+ This is probably superfluous now that sending the params will re-enable<br>
+ the gdevflp device anyway, but it should make the intention plain.<br>
+<br>
+Resource/Init/pdf_main.ps<br>
+base/gdevflp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-14 10:47:04 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=604646154201c1ecd7000a04fd33778d95b6aeac">604646154201c1ecd7000a04fd33778d95b6aeac</a>
+<blockquote>
+<p>
+ Bug 702725 Maintain spot colors when overprint mismatch in process CS<br>
+<br>
+ If the process color space does not match the source color space (for example<br>
+ drawing an RGB image to a CMYK device) and overprint is true, then we should<br>
+ still retain the spot colorants assuming the device supports them.<br>
+<br>
+base/gscspace.c<br>
+base/gscspace.h<br>
+base/gsicc.c<br>
+base/lib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-14 12:40:37 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a02c4496e0c41f5db492e3e549ad06254676dd0e">a02c4496e0c41f5db492e3e549ad06254676dd0e</a>
+<blockquote>
+<p>
+ demos/python/gsapi.py: match new handling of bool by gsapi_set_param().<br>
+<br>
+demos/python/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-14 16:32:52 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=99c90d8d20d4be6113016154119dc102c18c986b">99c90d8d20d4be6113016154119dc102c18c986b</a>
+<blockquote>
+<p>
+ Update api_test.<br>
+<br>
+ Fix proper expectation of return codes when setting params.<br>
+<br>
+ Fix alignment of memory buffers for display buffer test. md5sums<br>
+ of generated files now match properly.<br>
+<br>
+demos/c/api_test.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-14 16:30: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=067b1ee4b45ee31d251bb796b30079866465ce42">067b1ee4b45ee31d251bb796b30079866465ce42</a>
+<blockquote>
+<p>
+ Fix stray error during param to string conversions.<br>
+<br>
+base/gsparaml.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-14 13:14:26 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8eaac9486822db53d3a903ec8638dd83f6677782">8eaac9486822db53d3a903ec8638dd83f6677782</a>
+<blockquote>
+<p>
+ Add a couple of files missing from VS Solution.<br>
+<br>
+windows/ghostscript.vcxproj<br>
+windows/ghostscript.vcxproj.filters<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-14 13:05:14 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=043a9629cfc27d743b5125584753fd15e462d772">043a9629cfc27d743b5125584753fd15e462d772</a>
+<blockquote>
+<p>
+ Update gsapi_set_params to use an &quot;int *&quot; for booleans.<br>
+<br>
+doc/API.htm<br>
+pcl/pl/plapi.h<br>
+pcl/pl/plmain.c<br>
+pcl/pl/plmain.h<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-14 11:10: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=d7e8ea24060997ea5f4be1808b45117fe59b9ead">d7e8ea24060997ea5f4be1808b45117fe59b9ead</a>
+<blockquote>
+<p>
+ Bug 702611: Fix tiff_from_filep to handle subclassing<br>
+<br>
+ tiff_from_filep() creates a tiffio structure, which contains a pointer to the<br>
+ tiff device. If the device has been subclassed, however, that is the transient<br>
+ copy of the tiff device, and not the memory used by the &quot;real&quot; device, as<br>
+ pointed to by the graphics state.<br>
+<br>
+ Since we only use the device to get to the gs_memory_t pointer, just store that<br>
+ instead.<br>
+<br>
+base/gstiffio.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-13 11:15:01 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ae3d32942f4f976e89faff65c4e2fbcf4c6d5068">ae3d32942f4f976e89faff65c4e2fbcf4c6d5068</a>
+<blockquote>
+<p>
+ Fix memory leak associated with pdfwrite, type3x images<br>
+<br>
+ This leak is only an issue for non-GC interpreters such as pdfi<br>
+<br>
+devices/vector/gdevpdfi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-13 10:38:45 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3f2408d5ac786ac1c0a837b600f4ef3be9be0332">3f2408d5ac786ac1c0a837b600f4ef3be9be0332</a>
+<blockquote>
+<p>
+ graphics library- clean up streams used as DataSource for functions<br>
+<br>
+ The graphics library doesn't close streams which are supplied as<br>
+ the DataSource for type 0 functions, leading to a memory leak in pdfi<br>
+ because we create memory streams (and hence allocate buffers) for this<br>
+ kind of input.<br>
+<br>
+ Add code to close the stream (if present) when the type 0 function is<br>
+ freed. There may be future work required here and in other function<br>
+ types.<br>
+<br>
+base/gsfunc0.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-12 15:15:25 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0694e6e708ccab305524b64692403308f62f2652">0694e6e708ccab305524b64692403308f62f2652</a>
+<blockquote>
+<p>
+ More API.htm fixes<br>
+<br>
+ Found by Ethan Vrhel.<br>
+<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-11 13:53:07 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5066e260483660b8c13caab141fd34f5844298c7">5066e260483660b8c13caab141fd34f5844298c7</a>
+<blockquote>
+<p>
+ Improve client memory handling for colour spaces and patterns<br>
+<br>
+ Colour spaces have had a client_data member for some time (only used<br>
+ with Pantone colour replacement) but no means to signal to the client<br>
+ that a colour space was going to be freed.<br>
+<br>
+ In addition, its terribly hard for an interpreter which uses complex<br>
+ colour spaces (such as Separation and DeviceN, for Patterns see below)<br>
+ to reliably track when a colour space is freed.<br>
+<br>
+ This commit adds a new 'interpreter_data' pointer to hold data allocated<br>
+ by the interpreter which is associated with a colour space. We also add<br>
+ an 'interpreter_free_cspace_proc' to be called when a colour space is<br>
+ about to be freed. This gives the interpreter an opportunity to clean<br>
+ up the memory it has associated with the colour space.<br>
+<br>
+ Similarly pattern instances (as opposed to Pattern colour spaces) have<br>
+ long had a client_data member, which was previously stored in the<br>
+ 'template' (which is a terrible misnomer) for both type 1 and type 2<br>
+ patterns. However there was no procedure to notify the client when the<br>
+ pattern was freed! The PCL interpreter (which was the only one using<br>
+ this type of pattern) dealt with this by replacing the 'free' routine<br>
+ in the structure with its own routine which first freed the client data<br>
+ and then called the original free routine. This seems like a hack.<br>
+<br>
+ This commit moves the client_data out of the pattern instance and into<br>
+ the pattern structure proper. It also adds a 'notfy_free' member which<br>
+ holds a pointer to a function to be called when a pattern is freed. This<br>
+ gives the client a reliable opportunity to clean up the client_data.<br>
+<br>
+ These changes involve updating the PostScript, PCL and XPS interpreters<br>
+ to point to the new location of the client_data, as well as similar<br>
+ changes in the graphics library. pixmap patterns now use the notify_free<br>
+ functio0n instead of patching over the structure's free routine.<br>
+<br>
+base/gscspace.c<br>
+base/gscspace.h<br>
+base/gspcolor.c<br>
+base/gspcolor.h<br>
+base/gsptype1.c<br>
+base/gsptype1.h<br>
+pcl/pxl/pxink.c<br>
+psi/zpcolor.c<br>
+psi/zshade.c<br>
+xps/xpstile.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-12 10:46: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=e0529567af14fbbbd397b79ad9579d97799abfa5">e0529567af14fbbbd397b79ad9579d97799abfa5</a>
+<blockquote>
+<p>
+ Update Makefiles for new MSVC version.<br>
+<br>
+base/msvclib.mak<br>
+psi/msvc.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-11 16:09:48 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2228dad8c8649a120fd68d707824be1a06c87ee8">2228dad8c8649a120fd68d707824be1a06c87ee8</a>
+<blockquote>
+<p>
+ Fix missing bits and errors in API.htm<br>
+<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-08 10:02:18 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e52f3fccbbb81a4cc0e26837dea4359bda774d3c">e52f3fccbbb81a4cc0e26837dea4359bda774d3c</a>
+<blockquote>
+<p>
+ Fix Bug 702472: Array contents scrambled with writeobject/printobject<br>
+<br>
+ Thanks to Peter Cherepanov for this patch.<br>
+<br>
+ The mix-up of the nested arrays was caused by depth-first traversal of<br>
+ the array tree and assignment of offsets to subsidiary arrays that assumed<br>
+ width-first traversal. Switching to width-first traversal in all cases is<br>
+ the easiest way to fix the problem.<br>
+<br>
+ Additionally, access to the list of arrays is now implemented with the<br>
+ -index- operator that has constant complexity, rather than with -roll-<br>
+ that has linear complexity. So the whole process now has linear complexity<br>
+ rather than quadratic.<br>
+<br>
+ The total number of arrays in the exported object is arbitrarily limited to<br>
+ 64K. This prevents memory exhaustion when exported object has circular<br>
+ references, but should not hinder real world usage, if any.<br>
+<br>
+ Following the original implementation, equal names are not merged and<br>
+ exported separately.<br>
+<br>
+ NOTE:<br>
+ A Ghostscript extension, support of dictionaries in binary object sequence<br>
+ has been removed. Following the recent trend of cleaning up non-standard<br>
+ features.<br>
+<br>
+ Dictionary support is not yet removed from the C part. Contrary to PLRM,<br>
+ Adobe can parse binary object sequences with a non-zero tag in the top<br>
+ object. This feature is not yet added. Sequences that contain zero<br>
+ length names can be exported but cannot be imported due a conflict with<br>
+ accessing the user name index. This is a design flaw in PostScript.<br>
+<br>
+Resource/Init/gs_btokn.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-10 13:51:43 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9ff6690610a44be40b938ac948d2d0e96852fac2">9ff6690610a44be40b938ac948d2d0e96852fac2</a>
+<blockquote>
+<p>
+ demos/python/gsapi.py: added support for gsapi_get_param() and gsapi_enumerate_params().<br>
+<br>
+ Also:<br>
+ Wrote some very crude tests of new fns.<br>
+ Extended gsapi_set_param() to take optional &lt;type_&gt; arg.<br>
+ Fixed error in handling of word size on 64-bit Windows.<br>
+<br>
+demos/python/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-11 16:13:55 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fbe65ad97b583611ad854941927aa4b5a6642c55">fbe65ad97b583611ad854941927aa4b5a6642c55</a>
+<blockquote>
+<p>
+ Swap order of arguments in gsapi_set_param/gsapi_get_param.<br>
+<br>
+ This should play nicer with python.<br>
+<br>
+demos/c/api_test.c<br>
+doc/API.htm<br>
+doc/GPDL.htm<br>
+pcl/pl/plapi.c<br>
+pcl/pl/plapi.h<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+psi/imainarg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-10 18:29:17 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4a98669de4caf9ac9598ba28633979c78f31d884">4a98669de4caf9ac9598ba28633979c78f31d884</a>
+<blockquote>
+<p>
+ Fix gsapi_get_param behaviour on 'not found'.<br>
+<br>
+ Now we return gs_error_undefined if a value is not found.<br>
+<br>
+doc/API.htm<br>
+pcl/pl/plapi.h<br>
+pcl/pl/plmain.c<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-07 18:07: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=826f4411a7e879f0891728c0d38c82c516ae34d7">826f4411a7e879f0891728c0d38c82c516ae34d7</a>
+<blockquote>
+<p>
+ Bug 702607: Fix (and IMPROVE the maintainability of) EPSFitPage<br>
+<br>
+ Thanks to Peter Cherepanov for this excellent PostScript code to perform<br>
+ the scale and rotate FitPage. It is well designed and well documented and<br>
+ much more understandable than the previous.<br>
+<br>
+Resource/Init/gs_epsf.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-07 18:29: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=18caff3cdf2158e7642ded330bbaf14469863c7e">18caff3cdf2158e7642ded330bbaf14469863c7e</a>
+<blockquote>
+<p>
+ Update .def files with new gsapi functions.<br>
+<br>
+psi/gsdll2.def<br>
+psi/gsdll32.def<br>
+psi/gsdll32metro.def<br>
+psi/gsdll64.def<br>
+psi/gsdll64metro.def<br>
+psi/gsdllARM32metro.def<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-04 19:45:27 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f5692b9c78f0a9fb92c2019d509b80e08a19636">4f5692b9c78f0a9fb92c2019d509b80e08a19636</a>
+<blockquote>
+<p>
+ Update api_test: test enumeration of parameters.<br>
+<br>
+demos/c/api_test.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-07 18:01: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=e66ab52ed2d65ad6989e73b8c6c797faced8343a">e66ab52ed2d65ad6989e73b8c6c797faced8343a</a>
+<blockquote>
+<p>
+ Improve gs_param to string functions.<br>
+<br>
+ size_t's and int64_t's were being displayed wrong due to a typo<br>
+ in my use of the PRI macros.<br>
+<br>
+ Allow strings to be returned as human readable strings rather than<br>
+ hexstrings.<br>
+<br>
+base/gsparaml.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-07 15:18:07 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c5b0d528b9e3cbbeadeaba4e7f2e6958cc2a99a6">c5b0d528b9e3cbbeadeaba4e7f2e6958cc2a99a6</a>
+<blockquote>
+<p>
+ Add gsapi_enumerate_params functions.<br>
+<br>
+doc/API.htm<br>
+pcl/pl/pl.mak<br>
+pcl/pl/plapi.c<br>
+pcl/pl/plapi.h<br>
+pcl/pl/plmain.c<br>
+pcl/pl/plmain.h<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+psi/iminst.h<br>
+psi/psapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-08 09:32:59 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0c2e9b65fbc6a7b813fbf96e59d01bd8ffc776e4">0c2e9b65fbc6a7b813fbf96e59d01bd8ffc776e4</a>
+<blockquote>
+<p>
+ Coverity 361226: Add missing break.<br>
+<br>
+psi/imainarg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-07 18:00:58 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d65d008f20c1cefb27f9ee2f40bcde268050cd6e">d65d008f20c1cefb27f9ee2f40bcde268050cd6e</a>
+<blockquote>
+<p>
+ Fix typo in default param handling.<br>
+<br>
+ PageList should be a string, not a name.<br>
+<br>
+base/gsdparam.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-06 07:44: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=249da10b83dd8ed287877e6d21fa3ca3658aadea">249da10b83dd8ed287877e6d21fa3ca3658aadea</a>
+<blockquote>
+<p>
+ Add gstate param to client callback<br>
+<br>
+ This is needed for the pdfi interpreter.<br>
+<br>
+base/gsstate.c<br>
+base/gxstate.h<br>
+pcl/pcl/pctop.c<br>
+pcl/pxl/pxgstate.c<br>
+psi/zgstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-04 19:45:27 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=419fe20af3bdf203f980f41bd92189c7a76b32ba">419fe20af3bdf203f980f41bd92189c7a76b32ba</a>
+<blockquote>
+<p>
+ Update api_test.<br>
+<br>
+ Test param getting, and resolution changing.<br>
+<br>
+demos/c/api_test.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-06 15:23:50 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d01489255d8b5e1733ac1d664cbc1fbf206319e9">d01489255d8b5e1733ac1d664cbc1fbf206319e9</a>
+<blockquote>
+<p>
+ Fix bug in param array coercion.<br>
+<br>
+ If we're going to autoconvert an int array to a float array,<br>
+ make sure we label the final array as being floats, otherwise<br>
+ we run the risk of converting it again!<br>
+<br>
+base/gscparam.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-06 13:30: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=afac1313514a34b47bd7f3f441c6ec0ef169fccc">afac1313514a34b47bd7f3f441c6ec0ef169fccc</a>
+<blockquote>
+<p>
+ Tidy printing of floating point numbers in get_params.<br>
+<br>
+base/gsparaml.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-06 13:30:22 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=afbecca968cf0701da25cc7ec8ceba9075aad0f8">afbecca968cf0701da25cc7ec8ceba9075aad0f8</a>
+<blockquote>
+<p>
+ Parse #xx in param names correctly (for gsapi_set_param).<br>
+<br>
+base/gsparaml.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-06 12:02:59 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=783049405b39fb48f84d4ddee478e4ea10631c3d">783049405b39fb48f84d4ddee478e4ea10631c3d</a>
+<blockquote>
+<p>
+ Support arrays of names in the param passing code.<br>
+<br>
+base/gsparaml.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-05 18:48:59 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d1d44a90cf94338fec8ccf73338767ddb07a2254">d1d44a90cf94338fec8ccf73338767ddb07a2254</a>
+<blockquote>
+<p>
+ Update docs for set_param/get_param and -p.<br>
+<br>
+doc/API.htm<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-05 16:16:39 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=34703d722359c7547c532a3e24d2cd81c3f332f5">34703d722359c7547c532a3e24d2cd81c3f332f5</a>
+<blockquote>
+<p>
+ Trigger an initgraphics on every usage of -p within gs.<br>
+<br>
+ This enables us to set the resolution and have it reflected.<br>
+<br>
+psi/iapi.c<br>
+psi/imainarg.c<br>
+psi/int.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-05 13:44: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=932dc770a270ff7c70e899f953df9e9c72620d47">932dc770a270ff7c70e899f953df9e9c72620d47</a>
+<blockquote>
+<p>
+ Update gpdl to accept -d/-s/-p after filenames.<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-05 13:18: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=4d94506a1a9442bd3cc51b94eb5f6a16a12588f2">4d94506a1a9442bd3cc51b94eb5f6a16a12588f2</a>
+<blockquote>
+<p>
+ Add -pNAME=STRING options to gs and gpdl to accept parsed params.<br>
+<br>
+ This means we no longer need to rely on using -c and passing<br>
+ postscript fragments to configure (for example) pdfwrite.<br>
+<br>
+pcl/pl/plmain.c<br>
+pcl/pl/plmain.h<br>
+psi/imainarg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-04 19:44: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=fe0c022fbc1906a48b5a03704d9337751b26be8a">fe0c022fbc1906a48b5a03704d9337751b26be8a</a>
+<blockquote>
+<p>
+ Add gsapi_get_param<br>
+<br>
+base/gsparam.h<br>
+base/gsparam2.c<br>
+base/gsparaml.c<br>
+pcl/pl/plapi.c<br>
+pcl/pl/plapi.h<br>
+pcl/pl/plmain.c<br>
+pcl/pl/plmain.h<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+psi/psapi.c<br>
+psi/psapi.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-05 16:52: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=3a8f4eca0284294c05a471a99263d22032db84b6">3a8f4eca0284294c05a471a99263d22032db84b6</a>
+<blockquote>
+<p>
+ Bug 702606: Fix downsampler failing to initialise with pdfwrite.<br>
+<br>
+ Some of the params were being left unset. My mistake when I added<br>
+ them.<br>
+<br>
+devices/vector/gdevpsdi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-03 12:53:26 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c935b86d261d91ee04b5bf5f95028473d4af3735">c935b86d261d91ee04b5bf5f95028473d4af3735</a>
+<blockquote>
+<p>
+ Fix infinite loop in ialloc_validate_memory tracing the freelist.<br>
+<br>
+ Found in a DEBUG build running the file from Bug 702586 using:<br>
+ -sDEVICE=ppmraw -o x.ppm Bug702586.pdf<br>
+ Hangs after printing the error message:<br>
+ GPL Ghostscript GIT PRERELEASE 9.53: Unrecoverable error, exit code 1<br>
+<br>
+ Fixed by adding a check for self-reference and break out of the loop.<br>
+<br>
+ At some point, someone may want to look at how we get this freelist<br>
+ problem.<br>
+<br>
+psi/ilocate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-04 12:32:20 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ae588a57abccc598d74cb664c117ef339a42c1ba">ae588a57abccc598d74cb664c117ef339a42c1ba</a>
+<blockquote>
+<p>
+ Coverity 361222: Add missing break.<br>
+<br>
+psi/imain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-03 13:57:39 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=341da1a6c41d71344f7ea32505f9ce82c1177e99">341da1a6c41d71344f7ea32505f9ce82c1177e99</a>
+<blockquote>
+<p>
+ Avoid gsapi_set_param within a gsapi_runstring.<br>
+<br>
+ Also, avoid gsapi_run_file within a gsapi_runstring.<br>
+<br>
+pcl/pl/plmain.c<br>
+psi/iminst.h<br>
+psi/psapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-08-03 13:17: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=d1337dc425e1d032c0eeef26d530b096930432f4">d1337dc425e1d032c0eeef26d530b096930432f4</a>
+<blockquote>
+<p>
+ Update header dependencies<br>
+<br>
+base/lib.mak<br>
+base/tiff.mak<br>
+devices/dcontrib.mak<br>
+devices/devs.mak<br>
+devices/gdevpdfimg.h<br>
+psi/int.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-30 19:16: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=bf6884134c244c4766d13c76264fa4372eab4056">bf6884134c244c4766d13c76264fa4372eab4056</a>
+<blockquote>
+<p>
+ gsapi_set_param improvements.<br>
+<br>
+ Allow for a 'parsed' param type; this leverages the functions in<br>
+ gsparaml.c to parse an input string into a param list, coping<br>
+ with dictionaries and arrays.<br>
+<br>
+ We update those functions to improve behaviour on more exotically<br>
+ formed numbers (&quot;- 0.3e-10&quot; etc), on 'tricksy' inputs (e.g.<br>
+ &quot;&lt;&lt; /Foo (&gt;&gt;) &gt;&gt;&quot; etc) and to cope without relying on whitespace<br>
+ (e.g. &quot;&lt;&lt;/Foo/Bar/Baz[1 0]/Fizz&lt;1234&gt;/Bang(A)&gt;&gt;&quot; etc).<br>
+<br>
+ Update pl_implementation set_param entrypoint so that the language<br>
+ interface itself is based upon param lists, rather than typed<br>
+ params.<br>
+<br>
+ Update both implementations of gsapi_set_params so that if<br>
+ we are too early in the setup process stuff goes into the list<br>
+ and is held until we have devices/languages to pass it to. Also<br>
+ add a flag to allow for 'more to come' so that we can effectively<br>
+ set multiple params at once.<br>
+<br>
+base/gsparam.h<br>
+base/gsparaml.c<br>
+demos/c/api_test.c<br>
+demos/c/api_test.vcxproj<br>
+gpdl/psitop.c<br>
+pcl/pl/plapi.h<br>
+pcl/pl/plmain.c<br>
+pcl/pl/plmain.h<br>
+pcl/pl/pltop.c<br>
+pcl/pl/pltop.h<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+psi/imain.c<br>
+psi/imain.h<br>
+psi/iminst.h<br>
+psi/psapi.c<br>
+psi/psapi.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-31 10:13:27 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=49a4fede913a12a61fd6649898cf5999030f4b69">49a4fede913a12a61fd6649898cf5999030f4b69</a>
+<blockquote>
+<p>
+ Fix Bug 702598: Ghostscript will not open SECURED PDF that Adobe opens.<br>
+<br>
+ It's not really clear that this is a valid PDF since it does not conform to<br>
+ one comment in the spec related to AuthEvent with StmF and StrF /Identity,<br>
+ but since Adobe opens this we now open PDF's with AuthEvent specified as<br>
+ something other than /DocOpen and BOTH StrF and StmF /Identity. We look<br>
+ in the /CF &quot;StdCF&quot; dictionary for the AuthEvent. As per the spec., if<br>
+ AuthEvent is not present, assume DocOpen, and if StmF or StrF are not<br>
+ present, we default to /Identity.<br>
+<br>
+ Thanks to Ken Sharp for the initial work on this.<br>
+<br>
+Resource/Init/pdf_sec.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-30 14:23:23 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e3c4d64fe28ffc1361995de034beaeb2a9a7b206">e3c4d64fe28ffc1361995de034beaeb2a9a7b206</a>
+<blockquote>
+<p>
+ Fix warning message re: gs_smoothness<br>
+<br>
+base/gsstate.c<br>
+base/lib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-30 14:22: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=28452533cab466bef9437ee393140695dabc5f9c">28452533cab466bef9437ee393140695dabc5f9c</a>
+<blockquote>
+<p>
+ Fix memory leak with non-GC overprint device<br>
+<br>
+ This memory leak only matters in non-GC (reference-counted) interpreters<br>
+ such as pdfi.<br>
+<br>
+ There was an extra reference count after creating and then setting the<br>
+ overprint device. This change decrements the rc so that it will be 1<br>
+ when exiting this function, allowing it to be properly freed later.<br>
+<br>
+base/gsstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-30 16:18:44 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a1441168f346cefd28e6336f6fbb3b310540dbff">a1441168f346cefd28e6336f6fbb3b310540dbff</a>
+<blockquote>
+<p>
+ Changed gsapi.py to raise exceptions instead of returning error number<br>
+<br>
+ gsapi.py:<br>
+ Generate exceptions instead of returning error codes.<br>
+ Added python versions of gs_error_* codes.<br>
+<br>
+ examples.py:<br>
+ Updated to match new API.<br>
+ Re-raise import error if 'import gsapi' fails.<br>
+ Patched up calls of run_gpdl() to pass in_filename because passing None<br>
+ caused underlying C to return an error.<br>
+ Marked as executable.<br>
+ Look for input files relative to top of ghospdl checkout (found using<br>
+ __file__).<br>
+<br>
+demos/python/examples.py<br>
+demos/python/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-29 17:27:31 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=868200752e41adacc9d027092eba7be2db572b00">868200752e41adacc9d027092eba7be2db572b00</a>
+<blockquote>
+<p>
+ demos/python/gsapi.py: added detection of OS to import correct libgs.so/gpdldll*.dll.<br>
+<br>
+demos/python/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-29 07:25:58 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=54842402fafb0bfc9e4ab2031dbe82e7593f5d08">54842402fafb0bfc9e4ab2031dbe82e7593f5d08</a>
+<blockquote>
+<p>
+ devices/vector/gdevtxtw.c: Added TextFormat=4 for extract system.<br>
+<br>
+ We now retain glyph advance values, and fixed handling of extra widths.<br>
+<br>
+ Added .Advs arrays to text_list_entry_s and textw_text_enum_s so that<br>
+ we can store the original width of glyph before any additions due to<br>
+ TEXT_ADD_TO_ALL_WIDTHS. E.g. this allows one to determine whether glyphs are<br>
+ actually not adjacent.<br>
+<br>
+ Added TextFormat=4 for generating data suitable for extract system.<br>
+<br>
+ txtwrite_process_plain_text:<br>
+ Don't preserve gs_point dpt across iterations - this was cumlatively<br>
+ adding additions from TEXT_ADD_TO_SPACE_WIDTH, giving incorrect<br>
+ positioning. Instead we reset dpt back to {0,0} at the start of each<br>
+ iteration.<br>
+<br>
+ extract_text_output():<br>
+ New, implements TextFormat=4. Writes similar information to<br>
+ decorated_text_output() with TextFormat=0, but also specifies advance value<br>
+ for each char.<br>
+<br>
+devices/vector/gdevtxtw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-29 13:19:02 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7e28caf03348229390e8aa3cf6395e3a13fab0b3">7e28caf03348229390e8aa3cf6395e3a13fab0b3</a>
+<blockquote>
+<p>
+ Fix minor items in python demo<br>
+<br>
+ Remove ;'s at some line endings (a hard habit to break).<br>
+ Add try catch around import process. Update README<br>
+<br>
+demos/python/README.txt<br>
+demos/python/examples.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-29 14:39:46 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d802303d48d2cb7ac7be157865588b2416e8e633">d802303d48d2cb7ac7be157865588b2416e8e633</a>
+<blockquote>
+<p>
+ Add gs_param list parsing functions.<br>
+<br>
+ Actually, steal the existing functions from the PJL code,<br>
+ move them into the graphics library, and refactor slightly.<br>
+<br>
+ 2 functions; the first one, gs_param_list_add_tokens reads<br>
+ a string of key/value pairs and adds them to the list.<br>
+<br>
+ The second one, gs_param_list_add_parsed_value takes a key<br>
+ and a string for the value, and just adds that pair to the<br>
+ list.<br>
+<br>
+base/gsparam.h<br>
+base/gsparaml.c<br>
+base/lib.mak<br>
+pcl/pl/plparams.c<br>
+windows/ghostscript.vcxproj<br>
+windows/ghostscript.vcxproj.filters<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-29 11:29:31 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=423a04cd8bb7f12ffc127bfb30630348d98694b4">423a04cd8bb7f12ffc127bfb30630348d98694b4</a>
+<blockquote>
+<p>
+ Coverity 361150: Check return values for abuf_flush().<br>
+<br>
+ I foolishly checked the return value from abuf_flush() in new<br>
+ code, which has made Coverity wake up and start complaining<br>
+ about these older ones.<br>
+<br>
+base/gdevabuf.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-25 08:29: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=89bba350f5724b034753c4febfc559afad835d5c">89bba350f5724b034753c4febfc559afad835d5c</a>
+<blockquote>
+<p>
+ Defeat ICC component validation for nullpage device<br>
+<br>
+ Further to commit 4a3441bdde7060ecc9048bf391977412a82063a8, it turns out that,<br>
+ in practice, we can't completely ignore the ICC profile device parameters,<br>
+ parameters that have an immediate effect on the device are also validated during<br>
+ put_params and thus, for those, validation can still fail.<br>
+<br>
+ Using gxdso_supports_devn allows us to defeat the profile component validation,<br>
+ but nullpage is not a DeviceN device, hence that could cause confusion.<br>
+<br>
+ Using a dedicated gxdso_skip_icc_component_validation allows us to be more<br>
+ selective about when to short circuit those tests, and avoid confusion.<br>
+<br>
+ This is required for gpdl as Postscript initialisation is slightly different<br>
+ compared to regular Ghostscript - the nulldevice remains in play all through<br>
+ Postscript initialisation (rather than being replaced with the device<br>
+ specified by the command arguments part way through initialisation).<br>
+<br>
+base/gdevmpla.c<br>
+base/gdevnfwd.c<br>
+base/gdevp14.c<br>
+base/gsicc_manage.c<br>
+base/gxclrect.c<br>
+base/gxdevsop.h<br>
+devices/gdevcmykog.c<br>
+devices/gdevdsp.c<br>
+devices/gdevpsd.c<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-27 12:46: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=9beae99074655cf78729d5e26862f00cea11b109">9beae99074655cf78729d5e26862f00cea11b109</a>
+<blockquote>
+<p>
+ Ensure we can call dev_spec_op as soon as device is created<br>
+<br>
+ Since we can legitimately want to interrogate a device for its capabilities and<br>
+ preferences right from its creation, ensure the dev_spec_op is valid as soon<br>
+ as the device is created.<br>
+<br>
+base/gsdevice.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-28 21:36:11 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6179b719348c1622352b55d66599ba26cfba9d3d">6179b719348c1622352b55d66599ba26cfba9d3d</a>
+<blockquote>
+<p>
+ Add Python examples and README<br>
+<br>
+ Also fix typos in C# README<br>
+<br>
+demos/csharp/README.txt<br>
+demos/python/README.txt<br>
+demos/python/examples.py<br>
+demos/python/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-28 17:52:11 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c001ce438ef9fd0171104ac49afa110e39edb03e">c001ce438ef9fd0171104ac49afa110e39edb03e</a>
+<blockquote>
+<p>
+ Bug 702587: Fix alpha buffer issue with fill/stroke operations.<br>
+<br>
+ The &quot;alphabits&quot; devices work by an alpha buffer being inserted<br>
+ into the device chain before graphical operations. This intercepts<br>
+ drawing device calls, 'saves' the color, and then converts the<br>
+ call into a fill of a monochrome mask.<br>
+<br>
+ Only a small 'window' of mask is ever held in memory at once. When<br>
+ the drawing moves out of the range of that window, the window is<br>
+ flushed (conceptually the mask is scaled down, and then that scaled<br>
+ representation is filled with the saved color).<br>
+<br>
+ Any &quot;stragglers&quot; (i.e. unwritten back bits of mask) are flushed at<br>
+ the end of the graphical operation.<br>
+<br>
+ When using fill/stroke, the existing code fails to notice the<br>
+ color in use being changed. This means the last 'window' of<br>
+ fill can end up being written in the color intended for 'stroke'.<br>
+<br>
+ We therefore update the fill/stroke logic to check for the color<br>
+ changing. (We check for 'unflushed data' and 'color has changed').<br>
+<br>
+base/gdevabuf.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-27 12:43: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=45b122117e937bb36da2ef03ea590c90ebcd2de9">45b122117e937bb36da2ef03ea590c90ebcd2de9</a>
+<blockquote>
+<p>
+ pdfwrite - free ICCBased profile streams to prevent memory leak<br>
+<br>
+ An oversight in memory cleanup in pdfwrite.<br>
+<br>
+ ICCBased colour space arrays contain a reference (must be a reference)<br>
+ to a stream dictionary where the stream data is the profile. Because the<br>
+ stream dictionary is a reference, it must have an ID (a pdf index). This<br>
+ means that when we free the colour space array we do not free the stream<br>
+ dictionary element contained within it.<br>
+<br>
+ We don't free objects with a non-zero ID because these are assumed to be<br>
+ a type of resource, and tracked via the resource chains, but in the<br>
+ case of ICC profiles we were not adding them to a resource chain.<br>
+<br>
+ Fixed here by adding ICC profile streams to the 'resourceOther' chain<br>
+ so that they are freed on exit.<br>
+<br>
+devices/vector/gdevpdfk.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-25 10:52:24 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=55088a6e12775eeae1d19bf9a6db641566ea0c8f">55088a6e12775eeae1d19bf9a6db641566ea0c8f</a>
+<blockquote>
+<p>
+ pdfwrite - review use of sclose().<br>
+<br>
+ The stream interface essentially leaves the buffer management in the<br>
+ hands of the creator; sclose() does not free the stream buffer, but it<br>
+ does set the pointer in the stream state to NULL.<br>
+<br>
+ This can be problematic; if the only reference we have to the original<br>
+ buffer is the pointer in the stream state, then we must copy the pointer<br>
+ before calling sclose() and then free the buffer afterwards.<br>
+<br>
+ s_close_filters() does this BUT it can't know whether a given buffer<br>
+ was allocated in memory, from the C heap or some other fixed allocation.<br>
+ It simply frees all the buffers. Obviously this can cause problems if<br>
+ we use it indiscriminately.<br>
+<br>
+ I've reviewed all the places pdfwrite uses sclose() and where we can<br>
+ use s_close_filters() I've modified the code to do so (to avoid memory<br>
+ leaks in non-GC memory allocators). Where we must not attempt to free<br>
+ the buffer I've left the sclose() but commented on the reason.<br>
+<br>
+devices/vector/gdevpdf.c<br>
+devices/vector/gdevpdfc.c<br>
+devices/vector/gdevpdfo.c<br>
+devices/vector/gdevpdfu.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-22 09:57:54 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5d499272b95a6b890a1397e11d20937de000d31b">5d499272b95a6b890a1397e11d20937de000d31b</a>
+<blockquote>
+<p>
+ Bug 702582, CVE 2020-15900 Memory Corruption in Ghostscript 9.52<br>
+<br>
+ Fix the 'rsearch' calculation for the 'post' size to give the correct<br>
+ size. Previous calculation would result in a size that was too large,<br>
+ and could underflow to max uint32_t. Also fix 'rsearch' to return the<br>
+ correct 'pre' string with empty string match.<br>
+<br>
+ A future change may 'undefine' this undocumented, non-standard operator<br>
+ during initialization as we do with the many other non-standard internal<br>
+ PostScript operators and procedures.<br>
+<br>
+psi/zstring.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-24 14:03:51 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f77f99702c9c8418b9516056d5f4280105beafc4">f77f99702c9c8418b9516056d5f4280105beafc4</a>
+<blockquote>
+<p>
+ demos/python/gsapi.py: improved encoding/decoding of strings.<br>
+<br>
+ Set global _encoding to the encoding passed to gsapi_set_arg_encoding(), and<br>
+ use it where expected by the underlying C code.<br>
+<br>
+ gsapi_set_stdio():<br>
+ Pass bytes object to stdout and stderr callbacks for convenience, and<br>
+ document what expectations are.<br>
+<br>
+ gsapi_run_string*():<br>
+ Accept str or bytes; encode the former into bytes using utf-8 encoding.<br>
+<br>
+demos/python/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-22 18:41:05 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=269f880585dd2c6b3f716668b05f4c911214356b">269f880585dd2c6b3f716668b05f4c911214356b</a>
+<blockquote>
+<p>
+ configure.ac: avoid pathological shell glob expansion in CFLAGS_SANITIZE.<br>
+<br>
+ Specifying a command-line arg with lots of '*' characters that aren't intended<br>
+ to match any filenames, can stress the shell's glob code.<br>
+<br>
+ OpenBSD's ksh gets very slow, for example (e.g. 20m vs 45s in bash).<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-24 17:52:05 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dd1114e8ac0508ada6959c7ffcf6433b5bebe0cf">dd1114e8ac0508ada6959c7ffcf6433b5bebe0cf</a>
+<blockquote>
+<p>
+ make pdf_end_encrypt static<br>
+<br>
+devices/vector/gdevpdfx.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-24 15:26: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=0752757bca7979ed23e6e4fc3cf0772a49fb86c2">0752757bca7979ed23e6e4fc3cf0772a49fb86c2</a>
+<blockquote>
+<p>
+ pdfwrite - fix memory leak with sclose<br>
+<br>
+ The stream code is hideous and full of surprised to trap the unwary. In<br>
+ this case sclose() has the unexpected side-effect of setting the stream<br>
+ buffer to NULL before returning, so we cannot free it afterwards.<br>
+<br>
+ s_close_filters deals with this for us by taking a pointer to the<br>
+ buffer and calling gs_free_object on it after the stream is closed, so<br>
+ we really need to do that (or mimic the same thing ourselves).<br>
+<br>
+ We could do s_close_filters(s, s-&gt;strm) to just close each filter in<br>
+ turn, but I've chosen to just walk down the filter chain for each<br>
+ filter we added, and then close them all up to that point.<br>
+<br>
+ This means changing pdf_end_encrypt() so that instead of closing the<br>
+ stream (with the potential memory leak) we just signal whether the<br>
+ calling code should close the encryption filter.<br>
+<br>
+devices/vector/gdevpdfu.c<br>
+devices/vector/gdevpdfx.h<br>
+devices/vector/gdevpdti.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-24 09:42:10 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4837ddb473d3109fe2108b2ac2aa12a8bf5a0b4e">4837ddb473d3109fe2108b2ac2aa12a8bf5a0b4e</a>
+<blockquote>
+<p>
+ Have gsapi_run_file() handle access controls<br>
+<br>
+ Previously, gsapi_run_file() required the caller to add the file to be<br>
+ processed to the permit read file list. We'll now add the file to the permit<br>
+ read list, execute the file, and remove it from the list without the caller<br>
+ having to do so.<br>
+<br>
+pcl/pl/plapi.c<br>
+psi/imainarg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-22 14:01:14 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3244573621b1daa2997fbea0c13ce7f891b42203">3244573621b1daa2997fbea0c13ce7f891b42203</a>
+<blockquote>
+<p>
+ Fix pdfwrite memory leak when doing multi-page output<br>
+<br>
+ When doing multiple page output (i.e. page-%0d.pdf or whatever) there<br>
+ was a memory leak because it was attempting to short-circuit things and<br>
+ just delete the last (blank) page, but there was a ton of stuff that<br>
+ never got freed in that case.<br>
+<br>
+ This change sets a flag for the condition and then processes the whole<br>
+ page (which hopefully doesn't do much because it is empty), including<br>
+ freeing everything. Then it just deletes the file at the end instead<br>
+ of at the beginning of the function.<br>
+<br>
+ This function (pdf_close()) is over 1000 lines and really needs to be<br>
+ refactored for maintainability.<br>
+<br>
+devices/vector/gdevpdf.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-22 12:24:05 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=90f0f92bf6bf9c346cd3f74adaa42a7c8a3702cb">90f0f92bf6bf9c346cd3f74adaa42a7c8a3702cb</a>
+<blockquote>
+<p>
+ Fix memory leak in pdfwrite device<br>
+<br>
+ This appears to only be a memory leak for non-garbage-collected interpreters<br>
+ such as pdfi.<br>
+<br>
+ sclose() calls s_disable() which sets s-&gt;cbuf to 0.<br>
+ But it also calls client callbacks that might do things with cbuf first, so<br>
+ it will crash if we free it before calling sclose().<br>
+ Side-effects galore! :(<br>
+<br>
+ Anyway, we save the pointer before doing the sclose() so we can<br>
+ properly free it afterwards.<br>
+<br>
+devices/vector/gdevpdfu.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-23 12:51: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=4a3441bdde7060ecc9048bf391977412a82063a8">4a3441bdde7060ecc9048bf391977412a82063a8</a>
+<blockquote>
+<p>
+ Have nullpage ignore ICC parameters<br>
+<br>
+ We want nullpage to be (largely) a bitbucket device, but ICC profile<br>
+ parameters that require a specific color model could cause it to error.<br>
+<br>
+ Force nullpage to ignore changes to the device ICC profiles. Since it cannot<br>
+ ever produce output, it has no effect in normal operation.<br>
+<br>
+base/gdevnfwd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-23 13:15:20 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a0288377aa1952f8bb3c3739e0d119635280f31c">a0288377aa1952f8bb3c3739e0d119635280f31c</a>
+<blockquote>
+<p>
+ gpdl: Don't report -h or --help as failures.<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-21 14:50:13 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=36bec547acf7b799d09f0433b25b059153712839">36bec547acf7b799d09f0433b25b059153712839</a>
+<blockquote>
+<p>
+ demos/python/gsapi.py: removed requirement for python-3.7.<br>
+<br>
+ Removed use of collections module, and instead use hand-written classes, which<br>
+ are clearer and don't require python-3.7.<br>
+<br>
+demos/python/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-21 08:19: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=1d2b10ba71b40f261350e4ffc1f808381e81544d">1d2b10ba71b40f261350e4ffc1f808381e81544d</a>
+<blockquote>
+<p>
+ Fix Coverity ID 360929<br>
+<br>
+ Remove some pointless code, over-enthusiastic copy/paste error.<br>
+<br>
+base/gsstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-20 16:41:37 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e2efdde6b718098f0d35763bb094833a766af479">e2efdde6b718098f0d35763bb094833a766af479</a>
+<blockquote>
+<p>
+ Fix two minor issues in python API demo<br>
+<br>
+demos/python/gsapi.py<br>
+demos/python/jlib.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-20 16:32:42 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=217b8d292a1098ee56ab52b57bce3e32920b55d4">217b8d292a1098ee56ab52b57bce3e32920b55d4</a>
+<blockquote>
+<p>
+ Demo Viewers: Add readme for csharp example.<br>
+<br>
+ Also minor fixes in Windows application.<br>
+<br>
+demos/csharp/README.txt<br>
+demos/csharp/api/ghostnet.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainWindow.xaml.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-20 16:02:31 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4aa0fb2f264f196bb9a07f9d03f7b2da3e89abec">4aa0fb2f264f196bb9a07f9d03f7b2da3e89abec</a>
+<blockquote>
+<p>
+ Linux Demo Viewer : Fix few issues found with testing<br>
+<br>
+ Race condition between gs thread and ui thread. Also<br>
+ issues with zoom factors.<br>
+<br>
+demos/csharp/api/ghostmono.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainZoom.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-20 14:42:17 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b6622b9b2e95e20febe283035328569211413ac4">b6622b9b2e95e20febe283035328569211413ac4</a>
+<blockquote>
+<p>
+ Demo Viewer: Delete unused file. Minor code fix in wpf viewer.<br>
+<br>
+demos/csharp/linux/gtk_viewer/src/gsIO.cs<br>
+demos/csharp/linux/gtk_viewer/src/gsOutput.xaml.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainWindow.xaml.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-20 14:32:59 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4c6a3e9b8c87aadc6a50c457d8cf7190fafef59c">4c6a3e9b8c87aadc6a50c457d8cf7190fafef59c</a>
+<blockquote>
+<p>
+ Linux Demo Viewer: Complete various lingering tasks<br>
+<br>
+ Add proper closure of current file. Add launching of new<br>
+ process when another file is opened. Fix issue in<br>
+ distilling process.<br>
+<br>
+demos/csharp/api/ghostapi.cs<br>
+demos/csharp/api/ghostmono.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainRender.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainThumbRendering.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-20 11:14:42 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ed82512ecb34f9b51461383755e061e881c269c9">ed82512ecb34f9b51461383755e061e881c269c9</a>
+<blockquote>
+<p>
+ graphics library - initialise more members of the graphics state<br>
+<br>
+ When creating a graphics state and when calling gs_initgraphics() the<br>
+ code was not initialising several members of the graphics state. Mainly<br>
+ these were the new members introduced some time back to allow the PDF<br>
+ interpreter to track the PDF graphics state.<br>
+<br>
+ For consistency, and simpler implementation in pdfi, its better to<br>
+ specifically initialise the state, especially those members which<br>
+ should not default to 0.<br>
+<br>
+ This causes a few tiny diffs with XPS (because the XPS interpeter,<br>
+ unlike the PS and PDF interpreters) did not set a couple of members<br>
+ which are, nevertheless, used when rendering (smoothness and<br>
+ accuratecurves). Smoothness (which affects gradient fills) is now<br>
+ initialised to 0.02 instead of 1 (so much smoother) and accuratecurves<br>
+ is now true instead of false.<br>
+<br>
+base/gsstate.c<br>
+base/gxgstate.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-19 23:21:25 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=45d1994b40289b4ca7bf2d6504081ddcc4d68f14">45d1994b40289b4ca7bf2d6504081ddcc4d68f14</a>
+<blockquote>
+<p>
+ Linux Demo Viewer: Distiller work.<br>
+<br>
+ Everything is hooked in and running. For some odd reason the tmp<br>
+ file generated in the distilling process is 0 bytes. Will<br>
+ dig further to see why the file is not getting written. API<br>
+ seems happy as can be... very odd.<br>
+<br>
+demos/csharp/api/ghostapi.cs<br>
+demos/csharp/api/ghostmono.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-18 17:02: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=6466211fec0c44ce29e7cd094465d2ed4f351ef1">6466211fec0c44ce29e7cd094465d2ed4f351ef1</a>
+<blockquote>
+<p>
+ Linux Demo Viewer: Progress at last.<br>
+<br>
+ Many thing that should have been simple were complicated<br>
+ in the poorly documented world of C# mono development.<br>
+ Just need to do a bit more clean up and hook in the<br>
+ distilling option for PS.<br>
+<br>
+demos/csharp/api/ghostmono.cs<br>
+demos/csharp/linux/gtk_viewer/gtk_viewer.csproj<br>
+demos/csharp/linux/gtk_viewer/gtk_viewer.sln<br>
+demos/csharp/linux/gtk_viewer/src/MainRender.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainThumbRendering.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainZoom.cs<br>
+demos/csharp/linux/gtk_viewer/src/Program.cs<br>
+demos/csharp/linux/gtk_viewer/src/gsOutput.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-15 16:48:25 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0f59de6b3daab30d405ee5c5c4ac943c26721622">0f59de6b3daab30d405ee5c5c4ac943c26721622</a>
+<blockquote>
+<p>
+ Linux Demo Viewer: Various updates to try to get threading working<br>
+<br>
+demos/csharp/linux/gtk_viewer/src/DocPage.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainRender.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainThumbRendering.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainZoom.cs<br>
+demos/csharp/linux/gtk_viewer/src/Program.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-15 16:42:57 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=42b49069c0f87406dcd796183ba719d45dd8ce69">42b49069c0f87406dcd796183ba719d45dd8ce69</a>
+<blockquote>
+<p>
+ Mono GTK requires a different type of threading call<br>
+<br>
+ In Windows .NET one can use the BackgroundWorker event handler.<br>
+ Unfortunately the completed event does not call back on the<br>
+ correct thread. This one uses methods suggested by the mono<br>
+ GTK documentation. Keeping both versions for examples.<br>
+<br>
+demos/csharp/api/ghostmono.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-17 13:44: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=69593c399cbd445b51b4a7bf7d1ccc36604f2c37">69593c399cbd445b51b4a7bf7d1ccc36604f2c37</a>
+<blockquote>
+<p>
+ graphics library - initialise some gstate members appropriately<br>
+<br>
+ The members are (I think) all part of the PDF graphics state rather than<br>
+ the PostScript graphics state. These members are normally initialised<br>
+ by the (PostScript) PDF interpreter but when we are running the new<br>
+ pdfi interpreter inside Ghostscript we want to inherit the contents of<br>
+ the graphics state, not overwrite them, so we do not initialise these.<br>
+<br>
+ This leads to problems; because the values are never initialised in this<br>
+ case, and (for example) the text horizontal scaling remains at 0 when<br>
+ it should be 100. Since we set the Text Rendering Matrix partially by<br>
+ multiplying by that value, this can lead to a degenerate matrix and<br>
+ cause text not to appear. In addition it causes ps2write output to be<br>
+ incorrect and throw an error.<br>
+<br>
+ This commit does nothing with regular Ghostscript, but with GS+pdfi it<br>
+ fixes hundreds of errors in ps2write tests and results in at least some<br>
+ files drawing some content. At least one of these files is still not<br>
+ correct (it is with pdfi alone) so there is clearly more to do here.<br>
+<br>
+ This reduces the number of errors testing GS+pdfi to 475 which is<br>
+ 447 errors less than Ghostscript alone.<br>
+<br>
+base/gxgstate.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-08 10:51:21 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c735180bed16fa7e0525640670a4ee082700b770">c735180bed16fa7e0525640670a4ee082700b770</a>
+<blockquote>
+<p>
+ Change default pdfwrite.params.OPM to be 0<br>
+<br>
+ It is already set this way by gs distillerparams, but this makes it<br>
+ match to make it easier for pdfi.<br>
+<br>
+ (This is just a hack at this point, need a general solution for pdfi)<br>
+<br>
+devices/vector/gdevpsdf.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-16 09:15: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=630d427ab701c582c576a54f2b02f44ddae4a3f6">630d427ab701c582c576a54f2b02f44ddae4a3f6</a>
+<blockquote>
+<p>
+ Bug 702560: Honour PDFSTOPONERROR with broken form dict<br>
+<br>
+ Commit 409db64c5519 added support for form XObject dictionaries with a /Contents<br>
+ key for the content stream, rather than the form dict being the stream dict.<br>
+<br>
+ As that is contrary to the spec, this commit makes that case trigger an error<br>
+ when -dPDFSTOPONERROR is used.<br>
+<br>
+Resource/Init/pdf_draw.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-16 08:14:38 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=409db64c55198b0126c4afebd74eb26d8d7d57ed">409db64c55198b0126c4afebd74eb26d8d7d57ed</a>
+<blockquote>
+<p>
+ Bug 702560: Cope with (broken) form with &quot;Contents&quot;<br>
+<br>
+ The file for this bug has a form which contains a /Contents key for the content<br>
+ stream, rather than the /Form dictionary being a stream dictionary itself.<br>
+<br>
+ This is contrary to the spec, but Acrobat displays it without complaint.<br>
+<br>
+ Note: Acrobat pre-flight lists the resource to reference the form object<br>
+ as &quot;missing&quot;, and yet renders the form contents anyway.<br>
+<br>
+ Also note: we have a test file in the test suite that also includes &quot;/Contents&quot;<br>
+ key, which is a metadata string, so we have to explicitly check that the value<br>
+ for the &quot;/Contents&quot; key is a stream dictionary.<br>
+<br>
+Resource/Init/pdf_draw.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-14 14:03:41 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c184fcbcc23a196a6d6a26648e52d9f3372ac46b">c184fcbcc23a196a6d6a26648e52d9f3372ac46b</a>
+<blockquote>
+<p>
+ Fix problem introduced by commit 6a3c36f8 with multi-threaded rendering.<br>
+<br>
+ That commit changed the allocation requirement in clist_init_states, but didn't<br>
+ change the corresponding calculation that is supposed to match. Make this a<br>
+ function so that both will agree going forward.<br>
+<br>
+base/gxclist.c<br>
+base/gxclist.h<br>
+base/gxclthrd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-15 15:25: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=3786f7cb0c4ccf3442beafdf186dbc6835da8ae3">3786f7cb0c4ccf3442beafdf186dbc6835da8ae3</a>
+<blockquote>
+<p>
+ pdfwrite - write FontMatrix for FDArray of a CFF CIDFont<br>
+<br>
+ Bug #702556 &quot;pdfwrite produces an invalid pdf file&quot;<br>
+<br>
+ The description is incorrect here, the PDF file is not invalid. The<br>
+ input PostScript file has been created by converting a PDF file using<br>
+ Poppler.<br>
+<br>
+ The original PDF file contains a number of CIDFonts, all with CFF<br>
+ outlines, and the conversion, for reasons best known to itself, moves<br>
+ the FontMatrix out of the CFF font and into the CIDFont. This isn't<br>
+ possible with PDF, so pdfwrite is forced to move the FontMatrix from<br>
+ the CIDFont back into the CFF font.<br>
+<br>
+ Unfortunately we were not writing the FontMatrix out at the FDArray<br>
+ level of the CFF CIDFont, leading to text 1000 times too large.<br>
+<br>
+ Fixed here by writing the FontMatrix for each font in the FDArray.<br>
+<br>
+devices/vector/gdevpsf2.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-14 13:56:24 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5ec2c321c890114af532cb69e913462d56fd4f4f">5ec2c321c890114af532cb69e913462d56fd4f4f</a>
+<blockquote>
+<p>
+ Fix bug 702559: Patterns + overprint on 16 bit-per-component devicen devices.<br>
+<br>
+ The 'blank_unmasked_bits' needed to handle 16 bit per component (deep) planes.<br>
+<br>
+base/gxpcmap.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-14 13:52:45 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d23a584e66c103f43a1de2b1d327bcf196c5972a">d23a584e66c103f43a1de2b1d327bcf196c5972a</a>
+<blockquote>
+<p>
+ Fix bug 702557: oknown missing in paint_form check for Group.<br>
+<br>
+ Yet another case where indirect objects were not being handled.<br>
+<br>
+Resource/Init/pdf_draw.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-14 10:42:54 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=868b71c7df45571088e2ff7fcde666b2534d03f0">868b71c7df45571088e2ff7fcde666b2534d03f0</a>
+<blockquote>
+<p>
+ pdfwrite - move TwoByteToUnicode variable out of union<br>
+<br>
+ Discovered while working on the new PDF interpreter and the test file<br>
+ BCL_Easy.pdf with pdfwrite.<br>
+<br>
+ The TwoByteToUnicode flag was stored in the 'simple' structure in the<br>
+ encoding union. However, that flag is altered by the addition of<br>
+ ToUnicode code points, and that is *not* limited to simple encodings,<br>
+ we also alter it for CIDFonts. If we alter the flag we are, in effect,<br>
+ corrupting members of the union in the case where we are using a<br>
+ different structure in the union.<br>
+<br>
+ This showed up as corrupting the CMapName member of the type0 structure<br>
+ when built for 64-bit. It didn't exhibit with regular Ghostscript<br>
+ because that uses the ToUnicode CMap from the input, and only has a<br>
+ 2-byte Unicode value, the pdfi version currently returns a 4-byte<br>
+ code point.<br>
+<br>
+ Nevertheless, this clearly shows that the potential for problems is<br>
+ there, so to avoid this in future move the flag out of the union and<br>
+ into the main pdf_font_resource_s structure.<br>
+<br>
+devices/vector/gdevpdte.c<br>
+devices/vector/gdevpdtf.c<br>
+devices/vector/gdevpdtf.h<br>
+devices/vector/gdevpdtw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-14 10:35:53 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=bb1fcf280916311b4e38dfc438399aaebf9c8698">bb1fcf280916311b4e38dfc438399aaebf9c8698</a>
+<blockquote>
+<p>
+ Move declaration of a variable to function prolog.<br>
+<br>
+base/simscale.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-03 06:38:12 -0400
+</strong>
+<br>Ken Brown &lt;kbrown@cornell.edu&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8690eed13e3f343fde0d78a5c9bb0108b7f88d41">8690eed13e3f343fde0d78a5c9bb0108b7f88d41</a>
+<blockquote>
+<p>
+ Bug 702464: Fix Cygwin build<br>
+<br>
+ Commit 327dc89 made many changes to the Cygwin build of ghostscript,<br>
+ most of which were wrong. (They treated Cygwin as though it were<br>
+ Windows.) One of those changes caused the problem on x86_64 Cygwin<br>
+ reported here:<br>
+<br>
+ https://sourceware.org/pipermail/cygwin/2020-June/245070.html<br>
+<br>
+ This patch restores the Cygwin build to its former state and also<br>
+ makes a couple of small tweaks.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-10 09:44: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=857b4a2c5cb7d8ce8798caf623134b77e9f5c447">857b4a2c5cb7d8ce8798caf623134b77e9f5c447</a>
+<blockquote>
+<p>
+ Bug 702553: Broken handling of 1.0 TTF cmap case<br>
+<br>
+ A (clearly!) fairly little used path through the TTF cmap table handling code<br>
+ for PDF files had bitrotted to the point where we ended up trying to create<br>
+ a Type 42 font (from a TTF) which didn't have a CharStrings dictionary.<br>
+<br>
+ Specifically, this is the case where we're using a 1.0 cmap table, and the<br>
+ source PDF font's Encoding object does not contain a Differences key.<br>
+<br>
+Resource/Init/gs_ttf.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-09 22:20:32 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=13c04693416d0fbf0d614509cabce71e7399207e">13c04693416d0fbf0d614509cabce71e7399207e</a>
+<blockquote>
+<p>
+ WPF demo: Make changes introduced due to needs of mono project<br>
+<br>
+demos/csharp/windows/ghostnet_wpf_example/MainRender.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainThumbRendering.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainWindow.xaml.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/ghostnet_simple_viewer.csproj<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-09 22:08:08 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=279f4835e1ab58653665e9024aaf58032c0591d7">279f4835e1ab58653665e9024aaf58032c0591d7</a>
+<blockquote>
+<p>
+ Linux Demo Viewer: Pages now rendering.<br>
+<br>
+ AA working. Need to add zoom, page navigation, track down a few<br>
+ crashing issues.<br>
+<br>
+demos/csharp/api/ghostnet.cs<br>
+demos/csharp/linux/gtk_viewer/gtk-gui/gtk_viewer.src.gsOutput.cs<br>
+demos/csharp/linux/gtk_viewer/gtk_viewer.csproj<br>
+demos/csharp/linux/gtk_viewer/src/DocPage.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainRender.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainThumbRendering.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+demos/csharp/linux/gtk_viewer/src/gsOutput.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-08 22:36:25 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2260ba90c0e70f38f2fef96baf8b1b972eef2940">2260ba90c0e70f38f2fef96baf8b1b972eef2940</a>
+<blockquote>
+<p>
+ Linux Demo Viewer: StdIO output working<br>
+<br>
+ Thumbnail images created. Need to populate into UI next.<br>
+<br>
+demos/csharp/linux/gtk_viewer/src/MainThumbRendering.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+demos/csharp/linux/gtk_viewer/src/gsOutput.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-08 17:42: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=fcef740cdba16732a16f83a180404c458a075abc">fcef740cdba16732a16f83a180404c458a075abc</a>
+<blockquote>
+<p>
+ Progress on the UI design.<br>
+<br>
+ Made design similar to what was done for the WPF application.<br>
+ stdio callbacks from GS are working so hopefully will have pages<br>
+ rendered shortly.<br>
+<br>
+demos/csharp/linux/gtk_viewer/gtk-gui/gtk_viewer.src.gsOutput.cs<br>
+demos/csharp/linux/gtk_viewer/gtk_viewer.csproj<br>
+demos/csharp/linux/gtk_viewer/src/MainThumbRendering.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+demos/csharp/linux/gtk_viewer/src/gsOutput.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-07 21:54:08 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=057a39eb4e3f859d293c1e98e1005c82da31024c">057a39eb4e3f859d293c1e98e1005c82da31024c</a>
+<blockquote>
+<p>
+ csharp/linux: Initial commit of mono gtk csharp project<br>
+<br>
+ Many of the files are variants of the wpf project from windows.<br>
+ These projects share the same API files to ghostscript, but the<br>
+ mono UI related objects have to change since mono does not support<br>
+ WPF. This is just an initial commit to get something in place.<br>
+<br>
+demos/csharp/linux/gs_mono.sln<br>
+demos/csharp/linux/gtk_viewer/Properties/AssemblyInfo.cs<br>
+demos/csharp/linux/gtk_viewer/gtk-gui/generated.cs<br>
+demos/csharp/linux/gtk_viewer/gtk-gui/gtk_viewer.src.gsOutput.cs<br>
+demos/csharp/linux/gtk_viewer/gtk-gui/gui.stetic<br>
+demos/csharp/linux/gtk_viewer/gtk_viewer.csproj<br>
+demos/csharp/linux/gtk_viewer/src/DocPage.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainRender.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainThumbRendering.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainWindow.cs<br>
+demos/csharp/linux/gtk_viewer/src/MainZoom.cs<br>
+demos/csharp/linux/gtk_viewer/src/Program.cs<br>
+demos/csharp/linux/gtk_viewer/src/TempFile.cs<br>
+demos/csharp/linux/gtk_viewer/src/gsIO.cs<br>
+demos/csharp/linux/gtk_viewer/src/gsOutput.cs<br>
+demos/csharp/linux/gtk_viewer/src/gsOutput.xaml.cs<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-09 11:14:46 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e88ba0a1ee23911172222ee6ad7c2e3c9ea205a4">e88ba0a1ee23911172222ee6ad7c2e3c9ea205a4</a>
+<blockquote>
+<p>
+ Fix Coverity issue: sizeof(byte **) vs sizeof(byte *)<br>
+<br>
+ *Apparently* sizeof(byte *) and sizeof(byte **) might be different.<br>
+ I can't think of a case where that's true, but I am indeed using<br>
+ the wrong one.<br>
+<br>
+ Fix it here.<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-08 16:41:11 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=da755f7ee3da900a504a3265c64fb08c93a41eac">da755f7ee3da900a504a3265c64fb08c93a41eac</a>
+<blockquote>
+<p>
+ Bug 688990: Reimplementation of image mask scaling.<br>
+<br>
+ Aiming for a better match to Adobe's reference implementation.<br>
+<br>
+ Patch supplied by Peter Cherepanov. Many Thanks!<br>
+<br>
+base/lib.mak<br>
+base/simscale.c<br>
+base/simscale.h<br>
+base/simscale_foo.c<br>
+base/simscale_foo.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-08 18:52:44 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cc596ad6dd030f192416086370bd54e8059589d4">cc596ad6dd030f192416086370bd54e8059589d4</a>
+<blockquote>
+<p>
+ lgtm.com issue: Fix potential overflow in mkromfs.<br>
+<br>
+ We know that we only ever call this splitting the ROMFS into 4,<br>
+ so it's never going to overflow, but lgtm.com can't know that.<br>
+ Add a check to keep the number down to a sane size to keep it<br>
+ happy.<br>
+<br>
+base/mkromfs.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-08 15:50:11 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b0c208a555ed89139395a6ed0d8dce70d81cde09">b0c208a555ed89139395a6ed0d8dce70d81cde09</a>
+<blockquote>
+<p>
+ Bug 691452: Add missing dependencies.<br>
+<br>
+ Patch from Peter Cherepanov. Many thanks!<br>
+<br>
+base/lib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-08 07:22:06 -0700
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=000de1419225213fce7d06de0f1982cd79e4e141">000de1419225213fce7d06de0f1982cd79e4e141</a>
+<blockquote>
+<p>
+ Update CAL makefile to pass correct compiler flags.<br>
+<br>
+base/cal.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-08 00:03: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=79d9c45db7ce0ee075254bbfa8235d2996869fb1">79d9c45db7ce0ee075254bbfa8235d2996869fb1</a>
+<blockquote>
+<p>
+ Bug 702517: Fix overenthusiastic checking for NULL.<br>
+<br>
+ Patch from Peter Cherepanov. Many thanks.<br>
+<br>
+devices/gdevmgr.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-03 17:16: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=6c5a246ebe922e94df2e5f5cdd7d01ca86762cb3">6c5a246ebe922e94df2e5f5cdd7d01ca86762cb3</a>
+<blockquote>
+<p>
+ Rename displaydev_test to api_test.<br>
+<br>
+ Move it into the new &quot;demos&quot; directory, and expand it to cope<br>
+ with testing run_string too.<br>
+<br>
+demos/c/ReadMe.txt<br>
+demos/c/api_test.c<br>
+demos/c/api_test.vcxproj<br>
+demos/c/api_test.vcxproj.filters<br>
+toolbin/displaydev_test.vcxproj.filters<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-07 12:55:42 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=db8f3a277d0ae43cf5cffea16ee1c9149d4eb3de">db8f3a277d0ae43cf5cffea16ee1c9149d4eb3de</a>
+<blockquote>
+<p>
+ Extend gpdl to cope with being fed PDFs via run_string.<br>
+<br>
+ More generally, we can now cope with any language implementation<br>
+ requesting that data being fed in via run_string should be<br>
+ buffered up and then fed in via run_file instead, so formats that<br>
+ require seeking can cope.<br>
+<br>
+ We add a new gs_error_NeedFile error code. If a run_string<br>
+ implementation returns this, the calling gpdl layers captures<br>
+ the unused incoming data into an internal &quot;buffered_file&quot; object.<br>
+<br>
+ When we reach run_string_end, we then register a new filing<br>
+ system with gs_add_fs() to allow this buffered file to be found.<br>
+ We then run that file using the standard run_file mechanism.<br>
+ Then we remove that filing system, and free the buffered file.<br>
+<br>
+ The only implementation that currently uses this is the<br>
+ postscript one, which is amended to skip over leading whitespace<br>
+ and comments, looking for a PDF header.<br>
+<br>
+ XPS already has a mechanism in it for collating data<br>
+ into a file using run_string, but this was broken (due to<br>
+ process_eof not being called). Fixed here, but still using its<br>
+ own mechanism rather than gs_error_NeedFile for now.<br>
+<br>
+base/gserrors.h<br>
+doc/GPDL.htm<br>
+gpdl/psitop.c<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-07 16:09:18 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6eb675b18b8234256bb37190fd35243eab369e36">6eb675b18b8234256bb37190fd35243eab369e36</a>
+<blockquote>
+<p>
+ Tweak gsapi for gpdl to match gs.<br>
+<br>
+ The gpdl implementation of gsapi differed in the &quot;run_string&quot;<br>
+ arguments from the original gs implementation. Add the extra<br>
+ parameters here to make the two look identical.<br>
+<br>
+doc/GPDL.htm<br>
+pcl/pl/plapi.c<br>
+pcl/pl/plapi.h<br>
+pcl/pl/realmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-07 14:56: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=24c9b3834b29e8a0eaa6dd78712ef1306049b479">24c9b3834b29e8a0eaa6dd78712ef1306049b479</a>
+<blockquote>
+<p>
+ Tweak gp_file veneers.<br>
+<br>
+ This allows for implementations to have more NULL function pointers,<br>
+ and hence to be simpler.<br>
+<br>
+base/gp.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-06 11:04:52 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0a9ec5e7fa81cf3f67f001bfcac2575611e49d85">0a9ec5e7fa81cf3f67f001bfcac2575611e49d85</a>
+<blockquote>
+<p>
+ Fix bug 702530: Spurious circular reference error message from PDF interpreter<br>
+<br>
+ The safe_recursive function comments described popping the copy of the dict<br>
+ made for recursion (to allow multiple references at the same level), but the<br>
+ code did not implement that.<br>
+<br>
+Resource/Init/pdf_base.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-06 15:44: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=f2e2e3c1bb24887bce699821a3da1f8b3bbd12be">f2e2e3c1bb24887bce699821a3da1f8b3bbd12be</a>
+<blockquote>
+<p>
+ Remove the dmprt device<br>
+<br>
+ It has code which triggers security warnings, it has not built as it stands<br>
+ since before 8.71 (so &gt;10 years) and has significant (segfaulting) problems<br>
+ when modified to successfully build.<br>
+<br>
+ Since it cannot have been used (and no one has complained) in over ten years,<br>
+ we're removing it.<br>
+<br>
+contrib/contrib.mak<br>
+contrib/japanese/dmp_init.ps<br>
+contrib/japanese/dmp_site.ps<br>
+contrib/japanese/doc/gdevdmpr.txt<br>
+contrib/japanese/dviprlib.c<br>
+contrib/japanese/escp_24.src<br>
+contrib/japanese/gdevdmpr.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-03 13:52: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=61cbcfe94512ebd9316ff3c0d7ffaee06e226bc2">61cbcfe94512ebd9316ff3c0d7ffaee06e226bc2</a>
+<blockquote>
+<p>
+ Add/fix documentation for .begintransparencymaskgroup/.endtransparencymask<br>
+<br>
+doc/Language.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-06 12:13: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=0296da79f0f215322a1445c35f7343344806c08b">0296da79f0f215322a1445c35f7343344806c08b</a>
+<blockquote>
+<p>
+ Fix spot color handling of display device.<br>
+<br>
+ The device icc_struct needs to be initialised before we try to<br>
+ use it.<br>
+<br>
+devices/devs.mak<br>
+devices/gdevdsp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-07 12:51: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=2398bdb09fa80498a57ab54815e85d326506b509">2398bdb09fa80498a57ab54815e85d326506b509</a>
+<blockquote>
+<p>
+ Fix silly typo in gs_remove_fs.<br>
+<br>
+base/gslibctx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-07 12:51: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=dbe3a897df38c94c0c2af5b6ad5c4ee9a1c0ffe5">dbe3a897df38c94c0c2af5b6ad5c4ee9a1c0ffe5</a>
+<blockquote>
+<p>
+ Add a 'const' to gp_file_alloc.<br>
+<br>
+ This enables it to be called in some circumstances where we only<br>
+ have a const gs_memory_t.<br>
+<br>
+base/gp.h<br>
+base/gpmisc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-06 12:35:01 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=87be031c6039d5f6d9bc960a9aefd442dded3e92">87be031c6039d5f6d9bc960a9aefd442dded3e92</a>
+<blockquote>
+<p>
+ Fix Coverity 360266: Unchecked return value.<br>
+<br>
+ By the time we get here, we are guaranteed to be fatally failing.<br>
+ Checking the return value can't alter what we are returning.<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-03 18:37: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=8549a5c5af77ee512dea0a43a82bf7612a861237">8549a5c5af77ee512dea0a43a82bf7612a861237</a>
+<blockquote>
+<p>
+ Fix stray change in doc/API.htm<br>
+<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-03 18:29:48 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=aafbb943f1298a75058485fc0c277edfd7ef4048">aafbb943f1298a75058485fc0c277edfd7ef4048</a>
+<blockquote>
+<p>
+ Fixes for displaydev_test.<br>
+<br>
+ In 64bit builds, we expect the display device to fail when asked<br>
+ to align to a multiple of 4.<br>
+<br>
+ Also, correct detection of failures.<br>
+<br>
+toolbin/displaydev_test.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-03 17:14:52 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5410cc1d64a2082dcd0e037d1ccefdbf68894198">5410cc1d64a2082dcd0e037d1ccefdbf68894198</a>
+<blockquote>
+<p>
+ Fix infinite recursion in display device.<br>
+<br>
+ If the device was a clist device, and was opened/closed repeatedly,<br>
+ the wrong 'base' dev_spec_op could be stored.<br>
+<br>
+devices/gdevdsp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-03 15:45:49 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c2b0b6d61e62b9d490e9e3fcc24efb64c06f2a14">c2b0b6d61e62b9d490e9e3fcc24efb64c06f2a14</a>
+<blockquote>
+<p>
+ Fix gpdl run_string API to properly detect language.<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-03 12:06:17 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a3cf573c2e72daf75c64d7b3a09e544f6e027244">a3cf573c2e72daf75c64d7b3a09e544f6e027244</a>
+<blockquote>
+<p>
+ pdfwrite - when copying clip path, cater for differing allocators<br>
+<br>
+ This is for pdfi when run under Ghostscript; the pdfwrite device keeps<br>
+ a copy of the current clip path when it writes it to the output. But<br>
+ the code (gx_cpath_to_path) relies on gx_path_asign_preserve and that<br>
+ function specifically states that the allocators for the two paths<br>
+ must be the same.<br>
+<br>
+ In the case of pdfi under GS, the path is created using the pdfi memory<br>
+ allocator (its created by the pdfi interpreter), but the copied path<br>
+ is allocated using the device allocator, which is derived from the<br>
+ PostScript interpreter. The result of this is that pdfwrite can still<br>
+ be pointing to a path which was allocated by pdfi and can disappear<br>
+ when the pdfi interpreter exits, leaving a dangling pointer. Since the<br>
+ path is subject to garbage collection (allocated with the PostScript<br>
+ interpreter allocator) this causes a crash as soon as any kind of<br>
+ grbage collection takes place.<br>
+<br>
+ Fortunately there's a simple function call 'gx_path_unshare' which will<br>
+ copy the segments after assignment and we can check the allocators to<br>
+ see if they are the same and us this function if they are not.<br>
+<br>
+ Fixes the remaining (currently) seg faults with pdf when running inside<br>
+ Ghostscript.<br>
+<br>
+devices/vector/gdevpdfd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-02 15:38:27 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=20757da77706d4227cd7268113bbffbe7716a6fc">20757da77706d4227cd7268113bbffbe7716a6fc</a>
+<blockquote>
+<p>
+ Introduce demos folder with csharp and python API examples<br>
+<br>
+ Current csharp demo shows creation of wpf viewer. Goal will<br>
+ be to next show a Linux viewer using mono and the same API file.<br>
+ Python demo/API brought over from toolbin.<br>
+<br>
+demos/csharp/api/ghostapi.cs<br>
+demos/csharp/api/ghostnet.cs<br>
+demos/csharp/windows/ghostnet.sln<br>
+demos/csharp/windows/ghostnet_wpf_example/About.xaml<br>
+demos/csharp/windows/ghostnet_wpf_example/About.xaml.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/App.config<br>
+demos/csharp/windows/ghostnet_wpf_example/App.xaml<br>
+demos/csharp/windows/ghostnet_wpf_example/App.xaml.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/DocPage.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainPrint.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainRender.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainThumbRendering.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainWindow.xaml<br>
+demos/csharp/windows/ghostnet_wpf_example/MainWindow.xaml.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/MainZoom.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/PrintControl.xaml<br>
+demos/csharp/windows/ghostnet_wpf_example/PrintControl.xaml.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/Properties/AssemblyInfo.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/Properties/Resources.Designer.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/Properties/Resources.resx<br>
+demos/csharp/windows/ghostnet_wpf_example/Properties/Settings.Designer.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/Properties/Settings.settings<br>
+demos/csharp/windows/ghostnet_wpf_example/TempFile.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/XPSprint.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/ghostnet_simple_viewer.csproj<br>
+demos/csharp/windows/ghostnet_wpf_example/gsIO.cs<br>
+demos/csharp/windows/ghostnet_wpf_example/gsOutput.xaml<br>
+demos/csharp/windows/ghostnet_wpf_example/gsOutput.xaml.cs<br>
+demos/python/gsapi.py<br>
+demos/python/gsapiwrap.py<br>
+demos/python/jlib.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-02 15:02:48 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ade938cc74549ffc8d58b0c1fd5e9be7f5429855">ade938cc74549ffc8d58b0c1fd5e9be7f5429855</a>
+<blockquote>
+<p>
+ Add missing methods to API.htm<br>
+<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-02 12:21:33 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=62d83a31f7f20910eeb5938873c62e890c9d2b3a">62d83a31f7f20910eeb5938873c62e890c9d2b3a</a>
+<blockquote>
+<p>
+ Make -dSimulateOverprint=false work with transparency<br>
+<br>
+ When the source file has transparency and overprint, avoid doing<br>
+ the compatible overprint mode if overprint is specified to<br>
+ be disabled. Thanks to Ray Johnston for helping with the PS<br>
+ in pdf_main.ps<br>
+<br>
+Resource/Init/pdf_main.ps<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 10:52:19 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=00e7143ce97a3d983a223c7d69f74f995d8e267d">00e7143ce97a3d983a223c7d69f74f995d8e267d</a>
+<blockquote>
+<p>
+ Pass memory to clist_make_accum_device()<br>
+<br>
+ Change function args to propagate the memory type of the graphics<br>
+ state to clist_make_accum_device to create device with it.<br>
+<br>
+ Also, make sure the dev-&gt;bandlist_memory (used for freeing 'data') is<br>
+ allocated in the mem-&gt;non_gc_memory instead of the parent device's<br>
+ (fixes crash in gpdl/pcl that was introduced).<br>
+<br>
+ That will mean pdfi and gs/pdfi get non-gc, and gs gets gc.<br>
+<br>
+ There was a bug in gs/pdfi where the clist-pattern device was in gc<br>
+ memory and it was getting freed when pdfi was still using it.<br>
+<br>
+ This should fix a segfault in: tests_private/comparefiles/Bug688396.pdf<br>
+<br>
+base/gxclist.c<br>
+base/gxclist.h<br>
+base/gxpcmap.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-01 17:16:41 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=60d740278fc7f7b719482ae0dd4a59743025444d">60d740278fc7f7b719482ae0dd4a59743025444d</a>
+<blockquote>
+<p>
+ toolbin/gsapi.py: fixed stray ';' character.<br>
+<br>
+toolbin/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-01 14:00:17 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=07047636c74555d22c87fd7f05535b57e681a35d">07047636c74555d22c87fd7f05535b57e681a35d</a>
+<blockquote>
+<p>
+ toolbin/gsapi.py: added example of how to build .so and run.<br>
+<br>
+toolbin/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-07-01 13:59:56 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9900ecb043f3c138160f7d78d32af9967ea09b64">9900ecb043f3c138160f7d78d32af9967ea09b64</a>
+<blockquote>
+<p>
+ devices/vector/gdevtxtw.c: fixed build if TRACE_TXTWRITE defined.<br>
+<br>
+devices/vector/gdevtxtw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-30 15:38:24 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f3c50e50d6ffd9b4fd98f0215e78d7659bf0bdc3">f3c50e50d6ffd9b4fd98f0215e78d7659bf0bdc3</a>
+<blockquote>
+<p>
+ Whitespace fixes<br>
+<br>
+doc/API.htm<br>
+psi/dw32c.def<br>
+psi/dw64c.def<br>
+psi/dwmain32.def<br>
+psi/dwmain64.def<br>
+psi/dwsetup.def<br>
+psi/dwuninst.def<br>
+psi/gsdll32.def<br>
+psi/gsdll32metro.def<br>
+psi/gsdll64.def<br>
+psi/gsdll64metro.def<br>
+psi/gsdllARM32metro.def<br>
+psi/gsos2.def<br>
+toolbin/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-30 13:58: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=a1cf59357b6945fdac87afa76e2afd56bb3c1206">a1cf59357b6945fdac87afa76e2afd56bb3c1206</a>
+<blockquote>
+<p>
+ Slight tweak to the FAPI API<br>
+<br>
+ The previous Font API update had a slight mistake: for non-CID fonts, we'd pass<br>
+ GS_NO_GLYPH in place of the actually CID/GID into the &quot;fapi_set_cache&quot; call<br>
+ back.<br>
+<br>
+ That worked fine because, for Postscript (and currrent PDF) non-CID fonts use<br>
+ the glyph name, not a character code, and the other interpreters do not<br>
+ need a character for that callback.<br>
+<br>
+ We'll now pass the glyph index for non-CID fonts, and the<br>
+ glyph index + GS_MIN_CID_GLYPH (as is conventional for gs) - and that allows<br>
+ the fapi_set_cache call back to differentiate between CID and non-CID fonts.<br>
+<br>
+ For the new PDF interpreter (pdfi) we actually do need the character code, to<br>
+ correctly handle Truetype fonts. So fixing the graphics lib and associated code<br>
+ on master, so the pdfi branch can also work.<br>
+<br>
+base/gxfapi.c<br>
+psi/zfapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-30 09:27: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=71d0b343a3f20d298b9abbe6261bcb01ecb48dcb">71d0b343a3f20d298b9abbe6261bcb01ecb48dcb</a>
+<blockquote>
+<p>
+ Improve eps2write<br>
+<br>
+ Bug #702521 &quot;eps2write hygiene enhancements&quot;<br>
+<br>
+ If processing a multi-page input file, throw an error on the second<br>
+ page and write a message explaining the problem.<br>
+<br>
+ Encapsulate the 'global configuration' switches which affect the prolog<br>
+ processing, and are written from the ps2write device, in a dictionary<br>
+ because EPS files should not affect the current dictionary. Read those<br>
+ parameters back from the dictionary when establishing the EPS file's<br>
+ own dictionary, ensuring that a dictionary is actually present.<br>
+<br>
+ Use the global configuration to determine whether to install a custom<br>
+ error handler. If its an EPS file, then don't.<br>
+<br>
+devices/vector/gdevpdf.c<br>
+devices/vector/gdevpdfu.c<br>
+devices/vector/opdfread.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-29 12:04:05 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d286e365c298b30fc8f0d74979779c18cf4d28f5">d286e365c298b30fc8f0d74979779c18cf4d28f5</a>
+<blockquote>
+<p>
+ A few more changes to the API.htm docs.<br>
+<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-29 10:51:57 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=50a60d8421f3e64828790ec4588727fdc41c4d58">50a60d8421f3e64828790ec4588727fdc41c4d58</a>
+<blockquote>
+<p>
+ Fix minor issues in API.htm<br>
+<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-29 13:15:35 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=95e5e879c3a3fea42a97e942b53a6914ed7ccfc2">95e5e879c3a3fea42a97e942b53a6914ed7ccfc2</a>
+<blockquote>
+<p>
+ int_gstate_alloc() error handling<br>
+<br>
+ If we fail to allocate even the graphics libaray graphics state, bail out<br>
+ immediately.<br>
+<br>
+psi/zgstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-23 09:22: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=ea7818b8bb62b1df4f81e4dc752ccda54cc3d59c">ea7818b8bb62b1df4f81e4dc752ccda54cc3d59c</a>
+<blockquote>
+<p>
+ UMR fix: parameters for overprint compositor<br>
+<br>
+ Discovered while investigating (red herring) indeterminacy problems with<br>
+ eci_altona-test-suite-v2_technical2_x4.pdf<br>
+<br>
+ Reported by both valgrind and MSAN.<br>
+<br>
+base/gsptype1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-26 20:05:36 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=71962c6ed1e0bdf41e604a8014b93889f9d07ee5">71962c6ed1e0bdf41e604a8014b93889f9d07ee5</a>
+<blockquote>
+<p>
+ Squash warnings seen in Windows 64 bit build.<br>
+<br>
+base/gp_msprn.c<br>
+base/gp_mswin.c<br>
+base/gp_winfs.c<br>
+base/gsalloc.c<br>
+base/gsmemory.c<br>
+base/gxclist.c<br>
+base/gxi12bit.c<br>
+base/gxicolor.c<br>
+devices/gdevcdj.c<br>
+devices/gdevupd.c<br>
+devices/vector/gdevpdtb.c<br>
+ijs/ijs_exec_win.c<br>
+psi/idict.c<br>
+psi/inamedef.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-26 19:11: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=b68604731130f5493d2ecd5ae627b1bae9624c64">b68604731130f5493d2ecd5ae627b1bae9624c64</a>
+<blockquote>
+<p>
+ Update Makefile for new version of tesseract.<br>
+<br>
+base/tesseract.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-26 19:08:39 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ad2418e6dc8afa7c7278d6687c77791026f98228">ad2418e6dc8afa7c7278d6687c77791026f98228</a>
+<blockquote>
+<p>
+ Fix callouts being allocated/deallocated with the wrong gs_memory_t.<br>
+<br>
+ This didn't matter for gs, but for gpdl, it could cause problems<br>
+ on shutdown.<br>
+<br>
+base/gslibctx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-02 16:29:32 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=135f2ceaa84fb0a058ba781a451c65b95230e49a">135f2ceaa84fb0a058ba781a451c65b95230e49a</a>
+<blockquote>
+<p>
+ Have bmpcmp return EXIT_FAILURE if it can not compare<br>
+<br>
+toolbin/bmpcmp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-26 16:15: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=c022554c30f680c464f1026dc96c2450867da73c">c022554c30f680c464f1026dc96c2450867da73c</a>
+<blockquote>
+<p>
+ Remove displaydev_test project from GhostPDL.sln.<br>
+<br>
+ It should never have been added in git. I added it locally and<br>
+ then it slipped through and got committed by accidently.<br>
+<br>
+windows/GhostPDL.sln<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-26 16:12: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=622f4ea8ecc9b677165121d0c093632b9ea00c67">622f4ea8ecc9b677165121d0c093632b9ea00c67</a>
+<blockquote>
+<p>
+ Don't let psapi_new_instance trample libctx-&gt;stdio functions.<br>
+<br>
+ For GS builds this doesn't matter, as psapi_new_instance is called<br>
+ before users of the API get to set their own versions. With GPDL<br>
+ builds, the call to psapi_new_instance is deferred to the point<br>
+ where the API user may have already set their own functions.<br>
+<br>
+psi/psapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-26 16:10:42 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f886898e23483e82866148d6b564faf281490ba">4f886898e23483e82866148d6b564faf281490ba</a>
+<blockquote>
+<p>
+ Avoid using bool in gslibctx.h.<br>
+<br>
+ Ghostscript relies on bool being 'int'. Unfortunately, this header<br>
+ is included from various C++ files that use bool as char. Accordingly<br>
+ the easiest fix is to avoid using bool in these structure definitions.<br>
+<br>
+base/gslibctx.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 12:29:01 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=969370ba1dbcf767bae97fda6a3c066b04439c76">969370ba1dbcf767bae97fda6a3c066b04439c76</a>
+<blockquote>
+<p>
+ Fix refcnt's on the colorspace in clist<br>
+<br>
+ In the case where the colorspace was modified (read_set_color_space)<br>
+ there was a memory leak.<br>
+<br>
+ This was because the old code just freed pcs, but if the color had<br>
+ changed, then gs_state.color[0].color_space and [1].color_space are no<br>
+ longer the same. This way we track the references to them separately<br>
+ and free them separately.<br>
+<br>
+ pcs doesn't get its own ref, because it is always the same as<br>
+ gs_gstate.color[0].color_space.<br>
+<br>
+ This fixes memory leaks that only show up in the case that the memory<br>
+ is not garbage-collected, such as in pdfi.<br>
+<br>
+base/gxclrast.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 19:15:28 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=305b9fa7334fc0cd1f45585b8449b0c2c7517559">305b9fa7334fc0cd1f45585b8449b0c2c7517559</a>
+<blockquote>
+<p>
+ Fix leak of non-deregistered callback handlers on shutdown.<br>
+<br>
+base/gslibctx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 17:08: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=59bd5d853cec55497486ad4fb2f253a92e4da3cc">59bd5d853cec55497486ad4fb2f253a92e4da3cc</a>
+<blockquote>
+<p>
+ Fix typos in GPDL.htm.<br>
+<br>
+doc/GPDL.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 16:39: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=1615ace33ebb93d8c5faae8a440ab96f06f5f0fe">1615ace33ebb93d8c5faae8a440ab96f06f5f0fe</a>
+<blockquote>
+<p>
+ Add documentation for GPDL.<br>
+<br>
+doc/GPDL.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 15:13: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=35f6a9d9e2838069b5ba250cf26d016bc5ad3635">35f6a9d9e2838069b5ba250cf26d016bc5ad3635</a>
+<blockquote>
+<p>
+ GPDL whitespace fixes.<br>
+<br>
+pcl/pl/pjparsei.c<br>
+pcl/pxl/pxtop.c<br>
+xps/xpstop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 15:12:40 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a9bd94535682bd75bbaa18da42129e49046f3838">a9bd94535682bd75bbaa18da42129e49046f3838</a>
+<blockquote>
+<p>
+ Remove unused remnants from gpdl/pngtop.c<br>
+<br>
+gpdl/pngtop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-25 15:12:26 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f5b28fa033b4837f3cc28943f5c022bf48ca39d4">f5b28fa033b4837f3cc28943f5c022bf48ca39d4</a>
+<blockquote>
+<p>
+ GPDL: Remove &quot;min_input_size&quot; from pl_interp_characteristics_t<br>
+<br>
+ Never used.<br>
+<br>
+gpdl/jbig2top.c<br>
+gpdl/jp2ktop.c<br>
+gpdl/jpgtop.c<br>
+gpdl/pngtop.c<br>
+gpdl/psitop.c<br>
+gpdl/pwgtop.c<br>
+gpdl/tifftop.c<br>
+pcl/pcl/pctop.c<br>
+pcl/pl/pjparsei.c<br>
+pcl/pl/pltop.h<br>
+pcl/pxl/pxtop.c<br>
+xps/xpstop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-23 10:56:22 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ae5bcb6df4b9aa4337a93d5ce8c8152ea4494941">ae5bcb6df4b9aa4337a93d5ce8c8152ea4494941</a>
+<blockquote>
+<p>
+ Simple test app for driving the display device.<br>
+<br>
+toolbin/displaydev_test.c<br>
+toolbin/displaydev_test.vcxproj<br>
+toolbin/displaydev_test.vcxproj.filters<br>
+windows/GhostPDL.sln<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-16 14:31:40 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=eed3bad23510e59278bdaa5f7d0ab01fc1a1c21b">eed3bad23510e59278bdaa5f7d0ab01fc1a1c21b</a>
+<blockquote>
+<p>
+ Display device revamp.<br>
+<br>
+ Move display device over to being based upon a &quot;clist_mutatable&quot;<br>
+ device. Existing claimants won't see any difference.<br>
+<br>
+ New claimants can provide additional callbacks so they can drive<br>
+ it in 'rectangle request' mode.<br>
+<br>
+devices/gdevdsp.c<br>
+devices/gdevdsp.h<br>
+devices/gdevdsp2.h<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-12 13:00: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=04e937862eaa7e66bb9a87109874112cd354bf6f">04e937862eaa7e66bb9a87109874112cd354bf6f</a>
+<blockquote>
+<p>
+ Remove clist &quot;is_printer&quot; field.<br>
+<br>
+ Currently, the clist has an &quot;is_printer&quot; field, which is used to<br>
+ tell it how to forward dev_spec_op calls. This seems evil to me;<br>
+ a base class should not really need to know what class is being<br>
+ derived from it to know how to behave.<br>
+<br>
+ Instead, introduce a function pointer that says where<br>
+ dev_spec_ops should be forwarded to.<br>
+<br>
+base/gdevprn.c<br>
+base/gxclist.c<br>
+base/gxclist.h<br>
+base/gxclrect.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-11 12:47:58 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f697ed393a3f0cfffbf82b1f679cf6667b06611c">f697ed393a3f0cfffbf82b1f679cf6667b06611c</a>
+<blockquote>
+<p>
+ Refactor 'clist mutatable devices' from prn ones.<br>
+<br>
+ Devices that have to mutate to be clist ones need to be setup<br>
+ in a particular way. After the standard gx_device header, they<br>
+ are padded out to a large enough size that the clist header<br>
+ fields can fit in. Then the device specific fields follow.<br>
+<br>
+ gdev_prn devices are the standard example of this. In order<br>
+ to more easily allow other devices to work in the same way,<br>
+ we refactor the padding/clist specific fields out into new<br>
+ macros.<br>
+<br>
+base/gdevprn.c<br>
+base/gdevprn.h<br>
+base/gxclist.c<br>
+base/gxclist.h<br>
+devices/gdevbit.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-11 12:04: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=aae141b7849700a3b99a9222e09ed6ebaff5c61b">aae141b7849700a3b99a9222e09ed6ebaff5c61b</a>
+<blockquote>
+<p>
+ Refactor gdev_space_params slightly.<br>
+<br>
+ The gdev_space_params structure is also known as gdev_prn_space_params,<br>
+ which is slightly misleading as there is nothing prn specific about<br>
+ it.<br>
+<br>
+ Rename all uses of gdev_prn_space_params within the code to be<br>
+ gdev_space_params. Leave gdev_prn_space_params defined as a typedef<br>
+ so that any customer code will not be affected.<br>
+<br>
+ Rename compare_gdev_prn_space_params to be gdev_space_params_cmp<br>
+ to better reflect its non-prn-specific nature. Make it non-static<br>
+ and move it to gsdevice.c.<br>
+<br>
+base/gdevprn.c<br>
+base/gdevprn.h<br>
+base/gsdevice.c<br>
+base/gxdevcli.h<br>
+cups/gdevcups.c<br>
+devices/gdevcdj.c<br>
+devices/gdevijs.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-22 10:06:58 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8f40f4b1aca7a7f75ecf83469892478311ca21e1">8f40f4b1aca7a7f75ecf83469892478311ca21e1</a>
+<blockquote>
+<p>
+ Update Planar device to allow for easy &quot;interleaved&quot; operation.<br>
+<br>
+base/gdevmem.c<br>
+base/gdevmpla.c<br>
+base/gdevmpla.h<br>
+base/gxdevmem.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-19 19:04:53 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=22f5f898d49443df82c13bd683fbff61005485c2">22f5f898d49443df82c13bd683fbff61005485c2</a>
+<blockquote>
+<p>
+ Improve get_bits_rectangle for planar case.<br>
+<br>
+ The implementation of get_bits_rectangle to read planar data from<br>
+ a planar device, only implements GB_RETURN_POINTER. If this isn't<br>
+ in the request (i.e. the caller uses GB_RETURN_COPY to get a copy<br>
+ of the data in its own buffers), then it cannot cope.<br>
+<br>
+ Here we extend the routine to try to use a GB_RETURN_POINTER<br>
+ request internally, and to copy the returned data into the<br>
+ callers buffers.<br>
+<br>
+ Callers are of course already free to do this operation themselves,<br>
+ but this avoids the needless repetition of the code in every<br>
+ caller.<br>
+<br>
+base/gdevmpla.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-04 19:27:15 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4438e3e5bc4dfc9e46fc86d86d912171ec582a4e">4438e3e5bc4dfc9e46fc86d86d912171ec582a4e</a>
+<blockquote>
+<p>
+ Rework display device &quot;DisplayHandle&quot; passing.<br>
+<br>
+ Add gsapi_{,de}register_callout API. This allows integrators<br>
+ to register handlers for &quot;callouts&quot; from gs devices.<br>
+<br>
+ The first example of such a callout is the display device.<br>
+ Previously, this has relied on the gsapi_set_display_callback<br>
+ API to pass a pointer to a structure into the core, from where<br>
+ it was hackily poked into the display device structure.<br>
+<br>
+ Instead, we now have the display device &quot;callout&quot; to registered<br>
+ handlers to get the structure and the handle to use.<br>
+<br>
+ The legacy API is maintained by the API level implementing<br>
+ a handler to return the display callback in response to the<br>
+ devices callout.<br>
+<br>
+ The code to do the 'poking' of the display device has therefore<br>
+ been removed, and replaced by code that checks to see if an<br>
+ opened device needs reopening after init, if so, opens/closes it.<br>
+<br>
+base/gsdevice.c<br>
+base/gslibctx.c<br>
+base/gslibctx.h<br>
+base/gxdevcli.h<br>
+base/gxdevsop.h<br>
+devices/gdevdsp.c<br>
+devices/gdevdsp.h<br>
+devices/gdevdsp2.h<br>
+doc/API.htm<br>
+pcl/pl/plapi.c<br>
+pcl/pl/plapi.h<br>
+pcl/pl/plmain.c<br>
+psi/gsdll2.def<br>
+psi/gsdll32.def<br>
+psi/gsdll32metro.def<br>
+psi/gsdll64.def<br>
+psi/gsdll64metro.def<br>
+psi/gsdllARM32metro.def<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+psi/idisp.c<br>
+psi/idisp.h<br>
+psi/imain.c<br>
+psi/int.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-22 17:04: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=7e427246abb151cde9154783775acfaa776b502e">7e427246abb151cde9154783775acfaa776b502e</a>
+<blockquote>
+<p>
+ Simple Spot color test file.<br>
+<br>
+examples/spots.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-19 15:05: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=63d4ce589086609178160857452dbe3ca6ec0361">63d4ce589086609178160857452dbe3ca6ec0361</a>
+<blockquote>
+<p>
+ Tweak mem device; use NULL rather than 0.<br>
+<br>
+base/gdevmem.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-20 19:08:20 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5123260e329a44db83edf4b1378cb7101632f7eb">5123260e329a44db83edf4b1378cb7101632f7eb</a>
+<blockquote>
+<p>
+ Fix Bug 701852. Problems with the plane_extract device.<br>
+<br>
+ First, the plane_begin_typed_image function used the gs_gstate_copy_temp,<br>
+ but since this was allocated as a st_gs_gstate, and the reference counts<br>
+ were not handled (as the comment describes), freeing that object would<br>
+ decrement the ref_counts, causing premature free of objects.<br>
+<br>
+ Remove this dangerous function.<br>
+<br>
+ Change to use gs_gstate_copy so we have a proper gs_gstate structure.<br>
+<br>
+ Using gs_gstate_copy from a clist playback gstate requires that we have<br>
+ client colors and device colors in the color[0] and color[1] elements.<br>
+ Allocate, and initialize these, then free upon exit from clist_playback.<br>
+<br>
+ Also, the mem device underlying the plane_extract device needs to be<br>
+ retained so that it is not prematurely freed.<br>
+<br>
+base/gdevplnx.c<br>
+base/gsgstate.c<br>
+base/gxclrast.c<br>
+base/gxgstate.h<br>
+base/lib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-24 15:57:18 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2d69b876807bb66889e7d89ad39649aded72901e">2d69b876807bb66889e7d89ad39649aded72901e</a>
+<blockquote>
+<p>
+ Tweak gpdl parameter handling.<br>
+<br>
+ Reorder some bits (to make checking against gs easier).<br>
+<br>
+ Add handling for --help (same as -h).<br>
+<br>
+ Add handling for -v. List languages supported in version<br>
+ and usage output.<br>
+<br>
+ Add handling for -q. Rely on the fact that -q is the same as -dQUIET.<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-24 13:45: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=8433ecd5c9bee10a767293c886644fc91f6d7d4d">8433ecd5c9bee10a767293c886644fc91f6d7d4d</a>
+<blockquote>
+<p>
+ Fix gs command line parsing to handle --unknown<br>
+<br>
+ Previously &quot;--unknown&quot; would have been treated like &quot;--&quot;.<br>
+<br>
+psi/imainarg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-23 16:34:14 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a50c9e8d1819c5273a5f6d46137dc527382fabb1">a50c9e8d1819c5273a5f6d46137dc527382fabb1</a>
+<blockquote>
+<p>
+ Typo: ps2weite -&gt; ps2write<br>
+<br>
+doc/VectorDevices.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-23 01:36:02 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ea495beece2c461d6561e3d5780d40e77603abc9">ea495beece2c461d6561e3d5780d40e77603abc9</a>
+<blockquote>
+<p>
+ jbig2dec: Free result object upon error allocating referred to segments.<br>
+<br>
+jbig2dec/jbig2_segment.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-23 01:27:25 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e0c1b3c8162898eaa46640cae98be34642704e3c">e0c1b3c8162898eaa46640cae98be34642704e3c</a>
+<blockquote>
+<p>
+ jbig2dec: Fix memory leak caused by failing to allocate arithmetic coding context.<br>
+<br>
+jbig2dec/jbig2_text.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-18 22:02:27 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=554b67a6f3ba5e6c78b35f94ab3f57e96b1a3dee">554b67a6f3ba5e6c78b35f94ab3f57e96b1a3dee</a>
+<blockquote>
+<p>
+ Bug 702505. Annotations with BlendMode (/BM) failed as PDF is opened.<br>
+<br>
+ The check for transparency in the page would fail with 'typecheck' because<br>
+ the operand stack was not properly cleaned once the /BM was detected.<br>
+<br>
+Resource/Init/pdf_main.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-19 07:55:05 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c287d823671769a45c3b0c4a7f16a10fc5e7cb5a">c287d823671769a45c3b0c4a7f16a10fc5e7cb5a</a>
+<blockquote>
+<p>
+ Coverity 359871, 359872: un-init variable and conditional always true<br>
+<br>
+ A return code could remain unset in an otherwise successful completion of the<br>
+ function.<br>
+<br>
+ The new FAPI interface switch from using a signed value of -1 to the &quot;standard&quot;<br>
+ special value of GS_NO_CHAR, and I missed a case of that - since GS_NO_CHAR is<br>
+ positive, the existing test of &gt;= 0 was flagged as always true.<br>
+<br>
+psi/zfapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-18 19:34: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=57885b1ab496d12d4b6e7ee6a98144e5b040afa1">57885b1ab496d12d4b6e7ee6a98144e5b040afa1</a>
+<blockquote>
+<p>
+ Allow the First/LastPage device page count to be reset<br>
+<br>
+ If we get a DisablePageHandler parameter setting to &quot;false&quot; (i.e. enabling the<br>
+ filtering) then start counting pages from there.<br>
+<br>
+ This allows more intuitive control over extracting specific pages from multiple<br>
+ input files.<br>
+<br>
+base/gdevflp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-18 19:26: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=99d5046ebd2998eb550a66677142186b00071b73">99d5046ebd2998eb550a66677142186b00071b73</a>
+<blockquote>
+<p>
+ Improve PageList device param handling<br>
+<br>
+ The error handing when reading the PageList parameter did not match the rest of<br>
+ the code in gx_default_put_params() - record the error, but carry on.<br>
+<br>
+ Secondly, the original implementation never accounted for the possibility of<br>
+ &quot;unsetting&quot; the PageList. This is possible by sending an empty string.<br>
+<br>
+base/gsdparam.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-16 19:01:25 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e21dc926e2a2214ab8ae830b984057994d139a1c">e21dc926e2a2214ab8ae830b984057994d139a1c</a>
+<blockquote>
+<p>
+ toolbin/gsapi.py: python version of psi/iapi.h, using ctypes.<br>
+<br>
+toolbin/gsapi.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-25 12:50:32 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=74d47eada1e07862c3af7bbb214edd6cf94e0164">74d47eada1e07862c3af7bbb214edd6cf94e0164</a>
+<blockquote>
+<p>
+ In clusterpush, exclude sodebugobj and /build.<br>
+<br>
+toolbin/localcluster/clusterpush.pl<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-15 11:41:30 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e29a4c0affe3e7b66ff19d70e0d2abbc1e7fdf21">e29a4c0affe3e7b66ff19d70e0d2abbc1e7fdf21</a>
+<blockquote>
+<p>
+ Added experimental swig wrapper for gsapi.<br>
+<br>
+toolbin/gsapiwrap.py<br>
+toolbin/jlib.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-21 18:16:28 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=31157290172feea1817d6e69c5064d025a9ab45c">31157290172feea1817d6e69c5064d025a9ab45c</a>
+<blockquote>
+<p>
+ Changed gsapi_set_default_device_list() to take const char* arg, not char*.<br>
+<br>
+ This allows SWIG to work, and also tightens up the API.<br>
+<br>
+pcl/pl/plapi.c<br>
+pcl/pl/plapi.h<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-21 14:48:12 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9b953e588fb74a73b997d11412a2878f4cdfcdfb">9b953e588fb74a73b997d11412a2878f4cdfcdfb</a>
+<blockquote>
+<p>
+ Improve test for error in s_stdout_write_process().<br>
+<br>
+ Detect error case where outwrite() incorrectly returns &gt; count, so we can avoid<br>
+ incrementing pr-&gt;ptr beyond bounds of array.<br>
+<br>
+psi/ziodevsc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-09 19:17:55 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fcd9967f93151c49cefe437f6f0bdb1f047d68cc">fcd9967f93151c49cefe437f6f0bdb1f047d68cc</a>
+<blockquote>
+<p>
+ Avoid leak in pcl_process() by calling pcl_complete_raster() if returning error.<br>
+<br>
+ Fixes:<br>
+<br>
+ MEMENTO_FAILAT=18536 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ../tests_private/pcl/pcl5cfts/fts.2180<br>
+<br>
+ pcl/pcl/pcparse.c<br>
+<br>
+pcl/pcl/pcparse.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-04 16:14: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=0a4f6d6cb3efda8f0b334c0b04457362b00dac1b">0a4f6d6cb3efda8f0b334c0b04457362b00dac1b</a>
+<blockquote>
+<p>
+ Revisions to FAPI (error handling etc).<br>
+<br>
+ A lot of the FAPI methods made no account for errors (i.e. a call to return an<br>
+ unsigned 16 bit value would return an unsigned short int). In various places<br>
+ that meant we ended up using unlikely (in practice, impossible, yet still<br>
+ &quot;valid&quot;) values to indicate an error condition.<br>
+<br>
+ This commit changes those calls to have a conventional Ghostscript &quot;int&quot;<br>
+ return value and (mostly) take pointer to the storage into which they should<br>
+ write their value. We can now return meaninful error codes.<br>
+<br>
+ Secondly, in several places, the FAPI methods and code used integers to store<br>
+ character codes, cids, gids etc. This is less than ideal because we potentially<br>
+ have to handle 4 byte codes (especially for gids), and we also use some<br>
+ special 64 bit values (when available) for specific meanings. There were<br>
+ several workarounds for that, in various places.<br>
+<br>
+ This commit also changes the FAPI API and code to the gs_glyph type for all<br>
+ such values, removing the need for those workarounds<br>
+<br>
+base/fapi_ft.c<br>
+base/fapibstm.c<br>
+base/fapiufst.c<br>
+base/gxfapi.c<br>
+base/gxfapi.h<br>
+base/write_t1.c<br>
+base/write_t2.c<br>
+pcl/pl/plfapi.c<br>
+psi/zfapi.c<br>
+xps/xpsfapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-28 11:04:24 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8384e88e02cefa3de112546838a752d7f0a7a5c1">8384e88e02cefa3de112546838a752d7f0a7a5c1</a>
+<blockquote>
+<p>
+ Make gs_char and gs_glyph explicitly 64 bit types<br>
+<br>
+base/gsccode.h<br>
+base/lib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-16 16:50:38 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0339cbecea80d8a835b316b56d1c75a6fb850e52">0339cbecea80d8a835b316b56d1c75a6fb850e52</a>
+<blockquote>
+<p>
+ oss-fuzz 23440: check string lengths for PDF decryption<br>
+<br>
+ to avoid Use-of-uninitialized-value problems.<br>
+<br>
+psi/zpdf_r6.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-11 11:54: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=889df15d7c69e1fc90c6491f574352cacf9bc065">889df15d7c69e1fc90c6491f574352cacf9bc065</a>
+<blockquote>
+<p>
+ oss-fuzz 22182: validate glyph offset/length values<br>
+<br>
+ Check if the glyph offset and offset + length are larger than the size of the<br>
+ font stream before we can use it.<br>
+<br>
+psi/zfapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-11 11:53: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=e61000344e40930aa229be5aa5cb9d31958bcb6d">e61000344e40930aa229be5aa5cb9d31958bcb6d</a>
+<blockquote>
+<p>
+ Truetype: Tweak a conditional for signed/unsigned compare<br>
+<br>
+base/gstype42.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-16 14:14: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=0e50ac9dfcff795ec69cb646eea151bd57f0dd1c">0e50ac9dfcff795ec69cb646eea151bd57f0dd1c</a>
+<blockquote>
+<p>
+ Fix letter `te` in in Nimbus Sans Bold(Italic)<br>
+<br>
+ Update from URW++ (2020/05/26).<br>
+<br>
+ See:<br>
+ https://github.com/ArtifexSoftware/urw-base35-fonts/issues/28<br>
+ https://bugs.launchpad.net/ubuntu/+source/fonts-urw-base35/+bug/1871377<br>
+<br>
+ The glyph outline was much too wide, as well as the advance width being too<br>
+ large.<br>
+<br>
+ Note: a number of test files show tiny rounding differences - this is normal<br>
+ when these fonts get regenerated.<br>
+<br>
+Resource/Font/NimbusSans-BoldItalic<br>
+Resource/Font/NimbusSans-Italic<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-15 18:37:57 +0200
+</strong>
+<br>Till Kamppeter &lt;till.kamppeter@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a189c020b1eb34a043c086b89bbb1caa86cc01f5">a189c020b1eb34a043c086b89bbb1caa86cc01f5</a>
+<blockquote>
+<p>
+ When building on arm64 with gcc, disable libpng's neon optimizations.<br>
+<br>
+ Bug 702486 - Ghostscript 9.52 does not build on arm64<br>
+<br>
+ Ghostscript 9.52 with the libraries which it is including builds<br>
+ perfectly on i386, amd64, s390x, and armhf, but not on ppc64el<br>
+ and arm64. Problem are internal optimizations in the libpng<br>
+ shipped with Ghostscript.<br>
+<br>
+ For ppc64el the problem was already solved after the 9.52<br>
+ release:<br>
+<br>
+ http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1c9bd8e0aa4<br>
+ https://bugs.ghostscript.com/show_bug.cgi?id=702236<br>
+<br>
+ This fix is for arm64 is Based on this and on a similar fix for<br>
+ arm64 on another free software project<br>
+<br>
+ https://github.com/imagemin/optipng-bin/issues/97<br>
+<br>
+ This makes it also build on arm64, but it is not tested whether<br>
+ it still correctly works on arm64 after the fix.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-13 12:11: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=9984b482e5c41427f69be32752b649d44eccd3cd">9984b482e5c41427f69be32752b649d44eccd3cd</a>
+<blockquote>
+<p>
+ More work on gs_get_colorname_string<br>
+<br>
+ Commit 14c70d4e9 was, unfortunately, insufficient for the new PDF<br>
+ interpreter. The gs_lib_ctx pointer does not give us access back to the<br>
+ interpreter context, only to the *PostScript* interpreter name table.<br>
+<br>
+ So instead we now pass a graphics state pointer to<br>
+ gs_get_colorname_string(). This is only used for halftones currently,<br>
+ and even future use seems likely to be limited to objects like colour<br>
+ spaces, which are of course contained in a graphics state, so this<br>
+ seems relatviely future proof.<br>
+<br>
+ For PostScript the graphics state contains a memory_t pointer which we<br>
+ can use to get to the PostScript name table. For the PDF interpreter<br>
+ we already store some state in the 'client_data' of the graphics state<br>
+ and we will extend that to include a pointer to the interpreter context<br>
+ which will allow us to get the string from its name table.<br>
+<br>
+base/gscspace.h<br>
+base/gsncdummy.c<br>
+base/gxht.h<br>
+devices/vector/gdevpdfg.c<br>
+psi/zht2.c<br>
+psi/zht2.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-12 10:37: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=14c70d4e91db4b13273a48004fada094e8f8090d">14c70d4e91db4b13273a48004fada094e8f8090d</a>
+<blockquote>
+<p>
+ Improve usage of 'get_colorname_string'<br>
+<br>
+ This function is supplied to a couple of places, and stored. Its<br>
+ purpose is to retrieve a string for a colour plane, given an 'index'.<br>
+ The index is an entry in the interpreter's name table.<br>
+<br>
+ The implementations of get_colorname_string take a memory_t pointer<br>
+ and then use that to get a pointer to the interpreter, which they need<br>
+ because the interpreter context is where the name table is stored.<br>
+<br>
+ The problem with the existing usage is that we were supplying the<br>
+ device's memory_t pointer. However, if the halftone or colour space had<br>
+ been created by a different interpreter to the device (which can happen<br>
+ if we are running the PDF interpreter inside the PostScript interpreter)<br>
+ then the interpreter context would be incorrect.<br>
+<br>
+ We can solve this easily enough by using the colour space or halftone<br>
+ memory pointer. This is much safer since we can reasonably assume that<br>
+ the interpreter which created the object is the same one which stored<br>
+ the colour name in its name table.<br>
+<br>
+base/gsncdummy.c<br>
+devices/vector/gdevpdfg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-10 10:38:18 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=825d6807a72b68a2faf11fc37f89b1b75967d727">825d6807a72b68a2faf11fc37f89b1b75967d727</a>
+<blockquote>
+<p>
+ Bug 702476: Don't rely on null terminated strings<br>
+<br>
+ gs strings are not necessarily null terminted (especially so when created by the<br>
+ Postscript interpreter). So, when parsing a file name and deciding whether it's<br>
+ a &quot;device&quot; (e.g. &quot;%ram%&quot;) or a device + file name/path, don't rely on the string<br>
+ being null terminate.<br>
+<br>
+base/gsfname.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-08 09:25: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=0ae681ab1fd3475995418d00da1ccfe374f069cc">0ae681ab1fd3475995418d00da1ccfe374f069cc</a>
+<blockquote>
+<p>
+ oss-fuzz 22752: handle broken loca table.<br>
+<br>
+ Previously, the code did not differentiate between an empty loca table, a<br>
+ missing loca table and a broken loca table.<br>
+<br>
+ We'll now do so and, in particular, with a broken loca table (in this case,<br>
+ one with only 1 entry) we'll initialize the single entry to avoid later code<br>
+ accessing unitialized memory.<br>
+<br>
+base/gstype42.c<br>
+base/gxfont42.h<br>
+psi/zfapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-08 14:49: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=9e85e7a9518aa19964f1f8d30d3175ef8c3b950f">9e85e7a9518aa19964f1f8d30d3175ef8c3b950f</a>
+<blockquote>
+<p>
+ oss-fuzz 21643: Bounds check a pointer before accessing it.<br>
+<br>
+ In this case, immediately after a buffer refill, (as is &quot;normal&quot; for gs stream<br>
+ buffers) the pointers starts one byte *before* the actual buffer, the state on<br>
+ reentry meant we'd drop straight to trying dereference the pointer.<br>
+<br>
+ This just ensures the pointer gets moved on before we try to use it.<br>
+<br>
+base/seexec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-10 10: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=a4edd8320a5076bb52d1be7c061910b3b78718e0">a4edd8320a5076bb52d1be7c061910b3b78718e0</a>
+<blockquote>
+<p>
+ pdfwrite - don't error out on skipped images<br>
+<br>
+ Bug #702471 &quot;eps to pdf OK in 9.50, but failed in 9.51 and 9.52&quot;<br>
+<br>
+ Some encode filters, in this case DCTEncode, can throw an error on exit<br>
+ (premature EOD) if we never write any data to them. This can happen<br>
+ when pdfwrite sets up to write an image to the output file, but we<br>
+ never actually write the image, because it is being 'skipped'.<br>
+<br>
+ Images can be skipped because they are fully clipped out, unfortunately<br>
+ we can't detect this before we execute begin_typed_image or we could<br>
+ avoid a lot of setup.<br>
+<br>
+ Anyway, when we get to end_image, if we skipped the image then don't<br>
+ take any notice of errors when closing the filters used to write the<br>
+ image data to the PDF file.<br>
+<br>
+devices/vector/gdevpdfi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-09 15:14: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=d68f56e25110ba3baf03553c2d1839febc02dbdb">d68f56e25110ba3baf03553c2d1839febc02dbdb</a>
+<blockquote>
+<p>
+ Add docs for missing parts of gsapi.<br>
+<br>
+ Add docs for gsapi_set_param (and update the code to cope with<br>
+ long/int64_t/size_t's in line with the core code).<br>
+<br>
+ Add docs for path control functions.<br>
+<br>
+doc/API.htm<br>
+pcl/pl/plapi.h<br>
+pcl/pl/plmain.c<br>
+pcl/pl/pltop.h<br>
+psi/iapi.h<br>
+psi/psapi.c<br>
+psi/psapi.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-08 20:36:34 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b9a4616cdf710c79f575adb33b331cb495461d93">b9a4616cdf710c79f575adb33b331cb495461d93</a>
+<blockquote>
+<p>
+ Add documentation for gsapi_set_{stdio,poll}_with_handle.<br>
+<br>
+ Missed from earlier commit.<br>
+<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-07 09:45:57 -0700
+</strong>
+<br>ray &lt;Ray.Johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=748edd2fd75c684d63486eded71ad20254de6f4c">748edd2fd75c684d63486eded71ad20254de6f4c</a>
+<blockquote>
+<p>
+ Fix Bug 702383 - Segfault due to mis-use of PostScript transparency.<br>
+<br>
+ The fix for Bug 698306 fixed that case, but this case showed that the double<br>
+ calls to .pushpdf14devicefilter still could cause problems. Another patch<br>
+ already resolved calling transparency operations WITHOUT pushing the pdf14<br>
+ device (for Bug 702327).<br>
+<br>
+ Also undefine the PostScript transparency operators to (maybe) prevent<br>
+ misuse if -dALLOWPSTRANSPARENCY is not specified.<br>
+<br>
+Resource/Init/pdf_main.ps<br>
+psi/ztrans.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-05 14:51: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=560ff82b0bc782465aa4591b2953954d7cf5608c">560ff82b0bc782465aa4591b2953954d7cf5608c</a>
+<blockquote>
+<p>
+ Fix a bounds check in FAPI<br>
+<br>
+ Using less than or equal to should have been less than.<br>
+<br>
+ Found while investigating an oss-fuzz issue.<br>
+<br>
+psi/zfapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-04 16:57: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=7502a26f082e71e05df33dcd1dff66655f088673">7502a26f082e71e05df33dcd1dff66655f088673</a>
+<blockquote>
+<p>
+ Add documentation for OCR devices.<br>
+<br>
+doc/Devices.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-25 13:32:26 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=eb492c353084600d94877f7157840d24dd7f9301">eb492c353084600d94877f7157840d24dd7f9301</a>
+<blockquote>
+<p>
+ Update lcms2mt to lcms2-2.10rc2.<br>
+<br>
+lcms2mt/AUTHORS<br>
+lcms2mt/COPYING<br>
+lcms2mt/ChangeLog<br>
+lcms2mt/Lib/MS/lcms2_fast_float_plugin.lib<br>
+lcms2mt/Lib/MS/lcms2_static.lib<br>
+lcms2mt/Lib/MS/lcms2mt_fast_float_plugin.lib<br>
+lcms2mt/Lib/MS/lcms2mt_static.lib<br>
+lcms2mt/Makefile.am<br>
+lcms2mt/Makefile.in<br>
+lcms2mt/Projects/BorlandC_5.5/lcms2mt.rc<br>
+lcms2mt/Projects/BorlandC_5.5/lcmsdll.lk<br>
+lcms2mt/Projects/VC2013/lcms2mt.rc<br>
+lcms2mt/Projects/VC2013/lcms2mt.sln<br>
+lcms2mt/Projects/VC2013/lcms2mt_DLL/lcms2mt_DLL.vcxproj<br>
+lcms2mt/Projects/VC2015/lcms2mt.rc<br>
+lcms2mt/Projects/VC2015/lcms2mt.sln<br>
+lcms2mt/Projects/VC2015/lcms2mt_DLL/lcms2mt_DLL.vcxproj<br>
+lcms2mt/Projects/VC2015/lcms2mt_DLL/lcms2mt_DLL.vcxproj.filters<br>
+lcms2mt/Projects/VC2015/lcms2mt_static/lcms2mt_static.vcxproj<br>
+lcms2mt/Projects/VC2015/lcms2mt_static/lcms2mt_static.vcxproj.filters<br>
+lcms2mt/Projects/VC2017/lcms2mt.rc<br>
+lcms2mt/Projects/VC2017/lcms2mt.sln<br>
+lcms2mt/Projects/VC2017/lcms2mt_DLL/lcms2mt_DLL.vcxproj<br>
+lcms2mt/Projects/VC2017/lcms2mt_DLL/lcms2mt_DLL.vcxproj.filters<br>
+lcms2mt/Projects/VC2017/lcms2mt_static/lcms2mt_static.vcxproj<br>
+lcms2mt/Projects/VC2017/lcms2mt_static/lcms2mt_static.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/jpegicc/jpegicc.vcxproj<br>
+lcms2mt/Projects/VC2019/jpegicc/jpegicc.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/lcms2mt.rc<br>
+lcms2mt/Projects/VC2019/lcms2mt.sln<br>
+lcms2mt/Projects/VC2019/lcms2mt_DLL/lcms2mt_DLL.vcxproj<br>
+lcms2mt/Projects/VC2019/lcms2mt_DLL/lcms2mt_DLL.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/lcms2mt_static/lcms2mt_static.vcxproj<br>
+lcms2mt/Projects/VC2019/lcms2mt_static/lcms2mt_static.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/linkicc/linkicc.vcxproj<br>
+lcms2mt/Projects/VC2019/linkicc/linkicc.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/psicc/psicc.vcxproj<br>
+lcms2mt/Projects/VC2019/psicc/psicc.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/resource.h<br>
+lcms2mt/Projects/VC2019/testbed/testbed.vcxproj<br>
+lcms2mt/Projects/VC2019/testbed/testbed.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/tiffdiff/tiffdiff.vcxproj<br>
+lcms2mt/Projects/VC2019/tiffdiff/tiffdiff.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/tifficc/tifficc.vcxproj<br>
+lcms2mt/Projects/VC2019/tifficc/tifficc.vcxproj.filters<br>
+lcms2mt/Projects/VC2019/transicc/transicc.vcxproj<br>
+lcms2mt/Projects/VC2019/transicc/transicc.vcxproj.filters<br>
+lcms2mt/Projects/cppcheck/lcms2mt.cppcheck<br>
+lcms2mt/Projects/mac/LittleCMS/LittleCMS.xcodeproj/project.pbxproj<br>
+lcms2mt/README.1ST<br>
+lcms2mt/aclocal.m4<br>
+lcms2mt/config.guess<br>
+lcms2mt/configure<br>
+lcms2mt/configure.ac<br>
+lcms2mt/doc/LittleCMS2.10 API.pdf<br>
+lcms2mt/doc/LittleCMS2.10 Plugin API.pdf<br>
+lcms2mt/doc/LittleCMS2.10 tutorial.pdf<br>
+lcms2mt/doc/LittleCMS2.9 API.pdf<br>
+lcms2mt/doc/LittleCMS2.9 Plugin API.pdf<br>
+lcms2mt/doc/LittleCMS2.9 tutorial.pdf<br>
+lcms2mt/doc/WhyThisFork.txt<br>
+lcms2mt/include/Makefile.in<br>
+lcms2mt/include/lcms2mt.h<br>
+lcms2mt/include/lcms2mt_plugin.h<br>
+lcms2mt/plugins/README.1ST<br>
+lcms2mt/plugins/fast_float/COPYING.GPL3<br>
+lcms2mt/plugins/fast_float/Makefile<br>
+lcms2mt/plugins/fast_float/Projects/VC2019/lcms2mt_fast_float_plugin.vcxproj<br>
+lcms2mt/plugins/fast_float/Projects/VC2019/lcms2mt_fast_float_plugin.vcxproj.filters<br>
+lcms2mt/plugins/fast_float/Projects/VC2019/lcms2mt_fast_float_plugin.vcxproj.user<br>
+lcms2mt/plugins/fast_float/Projects/VC2019/lcms2mt_fast_float_plugin_testbed.vcxproj<br>
+lcms2mt/plugins/fast_float/Projects/VC2019/lcms2mt_fast_float_plugin_testbed.vcxproj.filters<br>
+lcms2mt/plugins/fast_float/Projects/VC2019/lcms2mt_fast_float_plugin_testbed.vcxproj.user<br>
+lcms2mt/plugins/fast_float/doc/LittleCMS fast float extensions 1.0.pdf<br>
+lcms2mt/plugins/fast_float/include/Makefile.am<br>
+lcms2mt/plugins/fast_float/include/lcms2mt_fast_float.h<br>
+lcms2mt/plugins/fast_float/src/Makefile.am<br>
+lcms2mt/plugins/fast_float/src/fast_16_tethra.c<br>
+lcms2mt/plugins/fast_float/src/fast_8_curves.c<br>
+lcms2mt/plugins/fast_float/src/fast_8_matsh.c<br>
+lcms2mt/plugins/fast_float/src/fast_8_tethra.c<br>
+lcms2mt/plugins/fast_float/src/fast_float_15bits.c<br>
+lcms2mt/plugins/fast_float/src/fast_float_15mats.c<br>
+lcms2mt/plugins/fast_float/src/fast_float_cmyk.c<br>
+lcms2mt/plugins/fast_float/src/fast_float_curves.c<br>
+lcms2mt/plugins/fast_float/src/fast_float_internal.h<br>
+lcms2mt/plugins/fast_float/src/fast_float_matsh.c<br>
+lcms2mt/plugins/fast_float/src/fast_float_separate.c<br>
+lcms2mt/plugins/fast_float/src/fast_float_sup.c<br>
+lcms2mt/plugins/fast_float/src/fast_float_tethra.c<br>
+lcms2mt/plugins/fast_float/testbed/Makefile.am<br>
+lcms2mt/plugins/fast_float/testbed/fast_float_testbed.c<br>
+lcms2mt/plugins/fast_float/testbed/test0.icc<br>
+lcms2mt/plugins/fast_float/testbed/test1.icc<br>
+lcms2mt/plugins/fast_float/testbed/test2.icc<br>
+lcms2mt/plugins/fast_float/testbed/test3.icc<br>
+lcms2mt/plugins/fast_float/testbed/test5.icc<br>
+lcms2mt/src/Makefile.am<br>
+lcms2mt/src/Makefile.in<br>
+lcms2mt/src/cmsalpha.c<br>
+lcms2mt/src/cmscam02.c<br>
+lcms2mt/src/cmscgats.c<br>
+lcms2mt/src/cmscnvrt.c<br>
+lcms2mt/src/cmserr.c<br>
+lcms2mt/src/cmsgamma.c<br>
+lcms2mt/src/cmsgmt.c<br>
+lcms2mt/src/cmshalf.c<br>
+lcms2mt/src/cmsintrp.c<br>
+lcms2mt/src/cmsio0.c<br>
+lcms2mt/src/cmsio1.c<br>
+lcms2mt/src/cmslut.c<br>
+lcms2mt/src/cmsmd5.c<br>
+lcms2mt/src/cmsmtrx.c<br>
+lcms2mt/src/cmsnamed.c<br>
+lcms2mt/src/cmsopt.c<br>
+lcms2mt/src/cmspack.c<br>
+lcms2mt/src/cmspcs.c<br>
+lcms2mt/src/cmsplugin.c<br>
+lcms2mt/src/cmsps2.c<br>
+lcms2mt/src/cmssamp.c<br>
+lcms2mt/src/cmssm.c<br>
+lcms2mt/src/cmstypes.c<br>
+lcms2mt/src/cmsvirt.c<br>
+lcms2mt/src/cmswtpnt.c<br>
+lcms2mt/src/cmsxform.c<br>
+lcms2mt/src/lcms2_internal.h<br>
+lcms2mt/src/lcms2mt.def<br>
+lcms2mt/testbed/Makefile.am<br>
+lcms2mt/testbed/Makefile.in<br>
+lcms2mt/testbed/new.icc<br>
+lcms2mt/testbed/testcms2.c<br>
+lcms2mt/testbed/testcms2.h<br>
+lcms2mt/testbed/testplugin.c<br>
+lcms2mt/testbed/zoo_icc.c<br>
+lcms2mt/utils/common/utils.h<br>
+lcms2mt/utils/common/vprf.c<br>
+lcms2mt/utils/jpgicc/Makefile.am<br>
+lcms2mt/utils/jpgicc/Makefile.in<br>
+lcms2mt/utils/jpgicc/jpgicc.c<br>
+lcms2mt/utils/linkicc/Makefile.am<br>
+lcms2mt/utils/linkicc/Makefile.in<br>
+lcms2mt/utils/linkicc/linkicc.c<br>
+lcms2mt/utils/psicc/Makefile.am<br>
+lcms2mt/utils/psicc/Makefile.in<br>
+lcms2mt/utils/psicc/psicc.c<br>
+lcms2mt/utils/samples/Makefile.am<br>
+lcms2mt/utils/tificc/Makefile.am<br>
+lcms2mt/utils/tificc/Makefile.in<br>
+lcms2mt/utils/tificc/tifdiff.c<br>
+lcms2mt/utils/tificc/tificc.c<br>
+lcms2mt/utils/transicc/Makefile.am<br>
+lcms2mt/utils/transicc/Makefile.in<br>
+lcms2mt/utils/transicc/transicc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-03 19:41:31 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a83716a1657df0a63aafa6582f47a93315aa61a6">a83716a1657df0a63aafa6582f47a93315aa61a6</a>
+<blockquote>
+<p>
+ Add skew detection/correction to downscaler.<br>
+<br>
+base/cal.mak<br>
+base/gxdownscale.c<br>
+base/gxdownscale.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-04 14:21: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=7867660a69bcc8624f0524ab56d86001d79e5b8d">7867660a69bcc8624f0524ab56d86001d79e5b8d</a>
+<blockquote>
+<p>
+ Update doc/gdevds32.c to track updated downscaler API.<br>
+<br>
+doc/gdevds32.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-04 13:20:40 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1db215120db50db418b199ff364e17feba681f14">1db215120db50db418b199ff364e17feba681f14</a>
+<blockquote>
+<p>
+ Fix a couple of benign compiler warnings<br>
+<br>
+ Firstly a missing include file.<br>
+<br>
+ Secondly we were using a utility function from pdfwrite, and obviously<br>
+ not including the .h file. We really shouldn't be hauling in bits of<br>
+ pdfwrite, so instead duplicate the (miniscule) bit of functionality we<br>
+ want.<br>
+<br>
+devices/vector/gdevtxtw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-25 17:36:24 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=278f9a53ed507f9109380ee4210fb860b35b1811">278f9a53ed507f9109380ee4210fb860b35b1811</a>
+<blockquote>
+<p>
+ txtwrite - better processing of text in type 3 fonts<br>
+<br>
+ Previously we were not able to accumulate the widths of text in a type<br>
+ 3 font. This code leverages (again) off the code in pdfwrite to exit<br>
+ to the interpreter, run the type 3 CharProc, and pick up the glyph<br>
+ advance width in setcachedevice.<br>
+<br>
+ This gives us better output for type 3 fonts, as we no longer<br>
+ think that consecutive text is in the same position.<br>
+<br>
+devices/vector/gdevtxtw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-03 16:54:41 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=feee7e6afd34ff3c1fa0c30ec024be25f1a61c1e">feee7e6afd34ff3c1fa0c30ec024be25f1a61c1e</a>
+<blockquote>
+<p>
+ Rework downscaler initialisation.<br>
+<br>
+ Pass the downscaler parameters into the downscaler init routines,<br>
+ rather than explicit values.<br>
+<br>
+ This reduces the size of the API, and means that future additions<br>
+ to the structure will automatically be passed through.<br>
+<br>
+base/gxdownscale.c<br>
+base/gxdownscale.h<br>
+devices/gdevchameleon.c<br>
+devices/gdevjpeg.c<br>
+devices/gdevocr.c<br>
+devices/gdevpdfimg.c<br>
+devices/gdevpng.c<br>
+devices/gdevpsd.c<br>
+devices/gdevtifs.c<br>
+devices/gdevtifs.h<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-24 14:13:39 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7322ef87546c55b29056c1d96d8bdbb7f3ba53ef">7322ef87546c55b29056c1d96d8bdbb7f3ba53ef</a>
+<blockquote>
+<p>
+ Tesseract based OCR devices.<br>
+<br>
+ pdfocr8/24/32, ocr and hocr devices.<br>
+<br>
+ Use OCRLanguage to set languages to use (&quot;eng&quot; by default).<br>
+<br>
+Makefile.in<br>
+base/endianness.h<br>
+base/gsiorom.c<br>
+base/gxiodev.h<br>
+base/leptonica.mak<br>
+base/lib.mak<br>
+base/msvccmd.mak<br>
+base/ocr.mak<br>
+base/tess_version.h<br>
+base/tesseract.mak<br>
+base/tessocr.cpp<br>
+base/tessocr.h<br>
+base/unix-gcc.mak<br>
+base/winlib.mak<br>
+configure.ac<br>
+devices/devs.mak<br>
+devices/gdevocr.c<br>
+devices/gdevpdfimg.c<br>
+devices/gdevpdfimg.h<br>
+devices/gdevpdfocr.c<br>
+psi/msvc.mak<br>
+windows/ghostscript.vcxproj<br>
+windows/ghostscript.vcxproj.filters<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-03 18:32: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=ff02973645a9aff2caf1bcd3032f119995e0d63f">ff02973645a9aff2caf1bcd3032f119995e0d63f</a>
+<blockquote>
+<p>
+ Fix coverity 359151.<br>
+<br>
+ Check ds-&gt;dev is non NULL before dereferencing it.<br>
+<br>
+base/gxdownscale.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-02 19:24:50 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=89f3dba59d801dd7c586d81d996ea8d641e1018a">89f3dba59d801dd7c586d81d996ea8d641e1018a</a>
+<blockquote>
+<p>
+ Add yet another version of nmake to makefile.<br>
+<br>
+psi/msvc.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-02 19:23: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=df31667a82d8320d25c15f9eaf14fbb33a4ba0a1">df31667a82d8320d25c15f9eaf14fbb33a4ba0a1</a>
+<blockquote>
+<p>
+ Bug 702446: Fix CAL halftoning.<br>
+<br>
+ Looks like cal was interpretting halftone X phase in the wrong<br>
+ direction.<br>
+<br>
+base/gximono.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-02 12:09:53 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0006f8715f5f5d83a7823dc9f41c76a1bdf9b0f7">0006f8715f5f5d83a7823dc9f41c76a1bdf9b0f7</a>
+<blockquote>
+<p>
+ Add lcms2mt files into build_bmpcmp.sh<br>
+<br>
+toolbin/build_bmpcmp.sh<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-02 11:59:44 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b9916ac2feec23b6c91e4c5d425dde0a73b1462d">b9916ac2feec23b6c91e4c5d425dde0a73b1462d</a>
+<blockquote>
+<p>
+ Add missing line feeds on error messages in bmpcmp<br>
+<br>
+toolbin/bmpcmp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-06-01 22:47: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=e3bbb3b93bcdade889b36641508f25929968089e">e3bbb3b93bcdade889b36641508f25929968089e</a>
+<blockquote>
+<p>
+ Add CIELAB comparison to bmpcmp<br>
+<br>
+ Adding the option -l will perform the difference in CIELAB<br>
+ color space, provided the application was built with a CMM and<br>
+ the source files were tiff files that had embedded ICC profiles.<br>
+<br>
+ It is necessary to use a threshold &gt; 0 and a window &gt; 1.<br>
+<br>
+ The threshold should be interpreted as dE^2 (a Euclidean norm squared<br>
+ term is used as opposed to the L infinity norm used for the other<br>
+ color spaces)<br>
+<br>
+ As a rule of thumb, dE^2 = 9 is barely noticeable in a side by side<br>
+ solid color. Colors in complex images are going to require a larger<br>
+ threshold.<br>
+<br>
+ This adds lcms2mt to the visual studio project. COLOR_MANAGED<br>
+<br>
+toolbin/bmpcmp.c<br>
+toolbin/bmpcmp.vcxproj<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-29 17:30: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=bb9959b60a9b3947c091ab867616385ac3fc7794">bb9959b60a9b3947c091ab867616385ac3fc7794</a>
+<blockquote>
+<p>
+ Refactor downscaler.<br>
+<br>
+ Originally the downscaler would just get the bits it wanted from<br>
+ either get_bits or get_bits_rectangle.<br>
+<br>
+ Then we extended the downscaler to integrate ClapTrap, which means<br>
+ it may have to get its scanlines from that. This was done hackily.<br>
+<br>
+ Now, we are pondering integrating scan/skew, which means there will<br>
+ be a third possible source, and they might be used in different<br>
+ combinations.<br>
+<br>
+ To simplify everything we introduce a &quot;gx_downscaler_liner&quot; mechanism<br>
+ which wraps up getting a single line of data, and move to using<br>
+ that everywhere. Adding scan/skew should then plug in using this<br>
+ much more neatly.<br>
+<br>
+base/gxdownscale.c<br>
+base/gxdownscale.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-29 17:22:40 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ba2fdf5517af3bcd8a613fda84c532307d1e7024">ba2fdf5517af3bcd8a613fda84c532307d1e7024</a>
+<blockquote>
+<p>
+ Fix memory leaks in tiffsep.<br>
+<br>
+ Calling TIFFCleanup doesn't close the underlying tiffio. Call<br>
+ TIFFClose instead.<br>
+<br>
+ Now the tiff io close handler is actually called, be careful<br>
+ not to close the underlying file twice.<br>
+<br>
+ Finally, actually remember to close the comp file.<br>
+<br>
+base/gstiffio.c<br>
+devices/gdevtifs.c<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-29 17:16: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=052a91b91d3d339dca3ce69bcb81faee9b8ff647">052a91b91d3d339dca3ce69bcb81faee9b8ff647</a>
+<blockquote>
+<p>
+ Claptrap: Fix us overrunning components in the planar case.<br>
+<br>
+base/claptrap-planar.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-30 19: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=2e4f5bdc708eaceecbce264184bc31f9b5fec107">2e4f5bdc708eaceecbce264184bc31f9b5fec107</a>
+<blockquote>
+<p>
+ Coverity ID 359131 and 359130<br>
+<br>
+ Remove some dead code after the commit which removed the ancient<br>
+ Acrobat 4 &amp; 5 compatibility hacks.<br>
+<br>
+devices/vector/gdevpdfd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-27 11:50:08 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a608d40b2d6d4a062857e23060c243a4b10aac69">a608d40b2d6d4a062857e23060c243a4b10aac69</a>
+<blockquote>
+<p>
+ Hacky fix for Memento leak in pcl_execute_macro().<br>
+<br>
+ Fixes the six remaining leaks after prev commit in:<br>
+ MEMENTO_FAILAT=15796 ./ghostpdl/membin/gpcl6 -sDEVICE=pbmraw -o /dev/null tests_private/pcl/pcl5cfts/fts.2180<br>
+<br>
+pcl/pcl/pcmacros.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-29 16:19:46 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=be333874ffd55024ce640bf8d4347dabff162be1">be333874ffd55024ce640bf8d4347dabff162be1</a>
+<blockquote>
+<p>
+ Improvements to pcl_do_resets().<br>
+<br>
+ From Henry; we now do pcl_reset_permanent on all items if we get an error.<br>
+<br>
+ This fixes all but 6 of the memento leaks in:<br>
+ MEMENTO_FAILAT=15796 ./ghostpdl/membin/gpcl6 -sDEVICE=pbmraw -o /dev/null tests_private/pcl/pcl5cfts/fts.2180<br>
+<br>
+pcl/pcl/pcommand.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-28 13:07:55 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3156b0aa8ac4e9ef440c169799658da249eb41c9">3156b0aa8ac4e9ef440c169799658da249eb41c9</a>
+<blockquote>
+<p>
+ pdfwrite - remove Acrobat 4 &amp; 5 work arounds<br>
+<br>
+ Acrobat 4 had a limit of around =/- 16,320 on real numbers (despite the<br>
+ reference stating it was +/- 32,7670, Acrobat 5 had a limit of 32,767.<br>
+ These are implementation limits, not architectural limits, and since<br>
+ co-ordinates are expressed as real numbers they place limits on the<br>
+ position of objects on the page.<br>
+<br>
+ Its clear from Bug #702436 that the clamping used by pdfwrite is not<br>
+ comprehensive; several paths are emitted that use co-ordinates outside<br>
+ the permitted range.<br>
+<br>
+ Since the implementation is flawed, and the newest of the 2 versions<br>
+ (Acrobat 5) has been obselete for 15 years, it seems pointless to try<br>
+ and improve this clamping. Instead this commit removes it entirely.<br>
+<br>
+ This removes a number of places where we test values and do some<br>
+ multiplication, so there should be a (probably immeasurable) performance<br>
+ gain from this. In addition the accuracy should be (very slightly)<br>
+ improved because there should be less problems with rounding errors.<br>
+<br>
+ This causes a large number of files to demonstrate single pixel shifts<br>
+ of a few glyphs, due to changes in rounding. In general these are very<br>
+ minor progressions, though a few could be seen to be equally minor<br>
+ regressions. Since these mostly (and in the case of regressions,<br>
+ entirely) occur at low resolution I believe this is acceptable.<br>
+<br>
+ One file, Bug694385, when sent to ps2write, exhibits a marked<br>
+ progression. This is because the clamping wasn't limited to the pdfwrite<br>
+ device, even though it was inappropriate to limit the ps2write output<br>
+ this way. A good deal of content is now included, where it was previously<br>
+ elided.<br>
+<br>
+devices/vector/gdevpdfd.c<br>
+devices/vector/gdevpdfg.c<br>
+devices/vector/gdevpdfi.c<br>
+devices/vector/gdevpdfx.h<br>
+devices/vector/gdevpdts.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-27 16:53: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=f8a0afa4029b33d3174a31fd562a0102644c9c9e">f8a0afa4029b33d3174a31fd562a0102644c9c9e</a>
+<blockquote>
+<p>
+ pdfwrite - fix clamping for Acrobat 4 and 5 limits<br>
+<br>
+ Bug #702436 &quot;With -dCompatibilityLevel=1.4, gs -sDEVICE=pdfwrite corrupts the contents&quot;<br>
+<br>
+ This isn't 'corruption'. Acrobat 4 and 5 have some serious limitations<br>
+ on the maximum value a real number can take. Since co-ordinates are real<br>
+ numbers this limits the area which can be addressed on the media.<br>
+<br>
+ The example file is very large and, using the default resolution of 720<br>
+ dpi, some of the content has co-ordinates outside the region which can<br>
+ be addressed by old versions of Acrobat.<br>
+<br>
+ In practice we can see that many parts of our output no longer limit<br>
+ themselves to these values anyway, so we shjould remove this archaic<br>
+ limitation.<br>
+<br>
+ In the meantime we can work around this specific case by noting that the<br>
+ clip is rectangular, and will be emitted as a 're' operation, so<br>
+ clamping all 4 co-ordinates is inappropriate. We need to clamp the llx<br>
+ and lly co-ordinates, but then its the width and height we need to limit<br>
+ rather than the urx and ury co-ordinates.<br>
+<br>
+devices/vector/gdevpdfd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-26 18:57: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=b53ad834b8cddfc55e2297e3d34ff834926a25ff">b53ad834b8cddfc55e2297e3d34ff834926a25ff</a>
+<blockquote>
+<p>
+ documentation - update man/ps2pdf.1<br>
+<br>
+ Replace reference to ps2pdf.htm with VectorDevices.htm<br>
+<br>
+man/ps2pdf.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-26 13:04:09 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6667495f56bc670322f607de419fe7e48434d3c6">6667495f56bc670322f607de419fe7e48434d3c6</a>
+<blockquote>
+<p>
+ Fix memento leak in hpgl_process_buffer().<br>
+<br>
+ The fix is to make hpgl_free_stick_fonts() call<br>
+ pl_font_glyph_width_cache_remove_nodes().<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=22007 ./ghostpdl/membin/gpcl6 -sDEVICE=pbmraw -o /dev/null tests_private/pcl/pcl5cfts/fts.1640<br>
+<br>
+ Also fixes many later leaks.<br>
+<br>
+pcl/pcl/pglabel.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-25 18:41:24 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1e8dd08e6c9e721c993d28bb36e107f81d16ce0a">1e8dd08e6c9e721c993d28bb36e107f81d16ce0a</a>
+<blockquote>
+<p>
+ Fix leak after error in accum_fill_rectangle()<br>
+<br>
+ Fixes:<br>
+ ./ghostpdl/membin/gpcl6 -sDEVICE=pbmraw -o /dev/null tests_private/pcl/pcl5cfts/fts.1552<br>
+<br>
+base/gxacpath.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-25 11:59:52 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=776cf430dd1a96a7da33c0d33af9a6dd42bffec0">776cf430dd1a96a7da33c0d33af9a6dd42bffec0</a>
+<blockquote>
+<p>
+ Fix memory leak on error in bitmap_paint() and its callers.<br>
+<br>
+ Previously, bitmap_paint() would free its 'gs_image_enum * pen' arg, but caller<br>
+ image_PaintProc() could also attempt to free this in one error path.<br>
+<br>
+ So have changed bitmap_paint() to only free what it allocates - call<br>
+ gs_image_cleanup() instead of gs_image_cleanup_and_free_enum(); and patched<br>
+ its two callers, mask_PaintProc() and image_PaintProc(), to add calls to<br>
+ gs_free_object(pen).<br>
+<br>
+ Fixes leak in:<br>
+ MEMENTO_FAILAT=15601 ./ghostpdl/membin/gpcl6 -sDEVICE=pbmraw -o /dev/null tests_private/pcl/pcl5cfts/fts.0954<br>
+<br>
+base/gsptype1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-25 11:59:19 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=815cbc244257f224eca799413ee64b17b62ffb4a">815cbc244257f224eca799413ee64b17b62ffb4a</a>
+<blockquote>
+<p>
+ Fix error handling in image_render_interpolate_icc().<br>
+<br>
+ Need to return gs_error_VMerror if gs_alloc_bytes() returns NULL.<br>
+<br>
+ Fixes segv in:<br>
+ MEMENTO_FAILAT=15601 ./ghostpdl/membin/gpcl6 -sDEVICE=pbmraw -o /dev/null tests_private/pcl/pcl5cfts/fts.0954<br>
+<br>
+base/gxiscale.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-22 08:26:34 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3227677f842a1060d29acc53465c6a9c76f7d48b">3227677f842a1060d29acc53465c6a9c76f7d48b</a>
+<blockquote>
+<p>
+ Fix Bug702327: PS transparency operations before PUSH_DEVICE causes problems.<br>
+<br>
+ Add check to make sure PUSH_DEVICE is the first pdf14 compositor action<br>
+ before allowing any other operation for page mode and clist mode.<br>
+<br>
+base/gdevp14.c<br>
+base/gxclist.c<br>
+base/gxclist.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-23 14:16: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=b4310ff9719fdafb840972649a4eb94a88165e66">b4310ff9719fdafb840972649a4eb94a88165e66</a>
+<blockquote>
+<p>
+ ps2write - ignore (most) text rendering modes with type 3 fonts<br>
+<br>
+ Bug #702233 &quot;ps2 stroked text mitre problem&quot;<br>
+<br>
+ The PDF specification says that Tr (text rendering modes) are not<br>
+ applied to type 3 fonts.<br>
+<br>
+ The PDF interpreter normally caters for this by not converting the<br>
+ glyphs to paths and applying the operation(s) but simply rendering the<br>
+ text.<br>
+<br>
+ However, when the destination is pdfwrite or ps2write, we don't apply<br>
+ the text rendering mode operations, we simply leave it up to the device<br>
+ to deal with. Ordinarily this works well, but ps2write had no provision<br>
+ for the special handling of type 3 fonts, and so was applying the text<br>
+ rendering mode to those fonts too, resulting in incorrect output.<br>
+<br>
+ This commit adds code to the PostScript output of ps2write; this checks<br>
+ the font type and does not apply the text rendering mode if the font<br>
+ type is 3. With one exception; if the text rendering mode is 3 (neither<br>
+ stroke nor fill) then we *do* apply it, because Acrobat does and if we<br>
+ don't apply it then we draw text that Acrobat does not.<br>
+<br>
+devices/vector/opdfread.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-22 11:25:43 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4d3ca982177aff19331b72a226664e281feede2c">4d3ca982177aff19331b72a226664e281feede2c</a>
+<blockquote>
+<p>
+ Fix tiff bmpcmp to organize image data upside right for windows<br>
+<br>
+toolbin/bmpcmp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-22 13:38: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=e1354dbd1cfc7692b7559a3f4c7f86900e513edc">e1354dbd1cfc7692b7559a3f4c7f86900e513edc</a>
+<blockquote>
+<p>
+ Bug 702431: Don't cast a unsigned long to an unsigned int<br>
+<br>
+ When allocating the pixmap for a display device, we were casting the unsigned<br>
+ long bitmap size to an unsigned int, meaning on LP64 (where a long is 64 bits)<br>
+ we could end up truncating the value.<br>
+<br>
+ Change it to cast to a size_t.<br>
+<br>
+ Ultimately, we'll want to change the display device structure to store a size_t<br>
+ rather than unsigned long, but that will mean changing the display device's<br>
+ public API.<br>
+<br>
+devices/gdevdsp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-21 11:12:14 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b4cda2ee4cbdf045e05b9832fd93f6a1a5cc3bb6">b4cda2ee4cbdf045e05b9832fd93f6a1a5cc3bb6</a>
+<blockquote>
+<p>
+ Remove the last of TURBO C support.<br>
+<br>
+ Most of the TURBO C support went away years ago, and we've had no complaints,<br>
+ so remove the rest.<br>
+<br>
+base/malloc_.h<br>
+base/memory_.h<br>
+base/stdpre.h<br>
+psi/store.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-22 14:24:39 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7d6d69ff17c43664482fe0dc34676a46ba551d93">7d6d69ff17c43664482fe0dc34676a46ba551d93</a>
+<blockquote>
+<p>
+ pdfwrite - rewrite the PSPageOptions code to use non-GC memory<br>
+<br>
+ Bug #702370 &quot;PSPageOption injecting unwanted characters&quot;<br>
+<br>
+ As Peter rightly comments in the bug this is due to the contents of the<br>
+ param_string_array not being enumerated when the array pointer is<br>
+ enumerated.<br>
+<br>
+ This seems to be a general problem, but we seem to get away with it for<br>
+ NeverEmbed and AlwaysEmbed (which are handled in a much more complex<br>
+ fashion) so I've chosen to leave those alone for now.<br>
+<br>
+ For PSPageOptions this commit creates a new gs_param_string_array and<br>
+ new strings for each of the strings in the param_list. These are<br>
+ allocated in non-GC memory and the pdfwrite device has complete control<br>
+ over their lifetime now.<br>
+<br>
+ We no longer numerate the member for GC (because it should not be GC'ed)<br>
+ and we free the array and its contents when we close the device.<br>
+<br>
+ This resolves the problem for me.<br>
+<br>
+devices/vector/gdevpdf.c<br>
+devices/vector/gdevpsdf.h<br>
+devices/vector/gdevpsdp.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-21 16:24: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=548fa474def31ddeb2864554ad0698bd53b13ea0">548fa474def31ddeb2864554ad0698bd53b13ea0</a>
+<blockquote>
+<p>
+ Add shell script to build bmpcmp with tiff and png support<br>
+<br>
+toolbin/build_bmpcmp.sh<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 18:15:40 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6955a325826e84c77723bab03046c801930801df">6955a325826e84c77723bab03046c801930801df</a>
+<blockquote>
+<p>
+ Extend gsapi interface with _with_handle variants for callbacks.<br>
+<br>
+ This allows us to specify specific caller_handles for each<br>
+ callback type rather than using a default one specified at<br>
+ gs instance creation time. The old functions still work.<br>
+<br>
+base/gp_mspol.c<br>
+base/gslibctx.c<br>
+base/gslibctx.h<br>
+base/strmio.c<br>
+pcl/pl/plapi.c<br>
+pcl/pl/plapi.h<br>
+psi/gsdll2.def<br>
+psi/gsdll32.def<br>
+psi/gsdll32metro.def<br>
+psi/gsdll64.def<br>
+psi/gsdll64metro.def<br>
+psi/gsdllARM32metro.def<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+psi/psapi.c<br>
+psi/ziodevsc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-21 08:21:05 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b0d2c264eb53c1838957151f1e18abfd1f17dd54">b0d2c264eb53c1838957151f1e18abfd1f17dd54</a>
+<blockquote>
+<p>
+ Bug 702225(pt2): Check fontconfig is new enough.<br>
+<br>
+ Turns out FC_VARIABLE is a fairly new addition to fontconfig's search<br>
+ parameters (&lt;= 2.12.6 doesn't have it &gt;=2.13.1 does), so add preprocessor<br>
+ conditions so we'll only use when fontconfig is new enough.<br>
+<br>
+base/gp_unix.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 16:23:12 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=627942b74af81c1b9b76b07dba6e4ce6234a4ab6">627942b74af81c1b9b76b07dba6e4ce6234a4ab6</a>
+<blockquote>
+<p>
+ Fix the Windows top makefile when using UFST<br>
+<br>
+ If the user chose to specify the build flags for using UFST directly on the<br>
+ nmake command line (rather than using the predefined UFST build target), we'd<br>
+ end up disabling Freetype, which has not been supported for some time.<br>
+<br>
+psi/msvc.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 15:17: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=619e7f46c9c760879409f9efaa4b3e798986538e">619e7f46c9c760879409f9efaa4b3e798986538e</a>
+<blockquote>
+<p>
+ lgtm.com fixes: float * float -&gt; double.<br>
+<br>
+ Make casting explicit. Ideally we'd cast one of the floats to a<br>
+ double to start with, so the multiplication happens in doubles,<br>
+ but that produces lots of diffs.<br>
+<br>
+base/gspaint.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 11:39:08 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e27d7babcbbbee07fe9c458228d941ce3b4f8890">e27d7babcbbbee07fe9c458228d941ce3b4f8890</a>
+<blockquote>
+<p>
+ Fix typo introduced in copy/paste<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-19 12:18:29 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c9142412c3ec52e2fcb42053706352a9ee5d9a74">c9142412c3ec52e2fcb42053706352a9ee5d9a74</a>
+<blockquote>
+<p>
+ Add tiff to bmpcmp<br>
+<br>
+ This upgrades the VS solution to 2019 for the bmpcmp project. Fixes a couple<br>
+ minor issues that existed with some of the project configurations and add<br>
+ tiff support.<br>
+<br>
+toolbin/bmpcmp.c<br>
+toolbin/bmpcmp.sln<br>
+toolbin/bmpcmp.vcproj<br>
+toolbin/bmpcmp.vcxproj<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 14:45:15 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cf15813c35a75067e828608c665dae30999f8dd5">cf15813c35a75067e828608c665dae30999f8dd5</a>
+<blockquote>
+<p>
+ Update Acrobat2Tiff to VS2019<br>
+<br>
+toolbin/Acrobat2Tiff/Acrobat2Tiff.sln<br>
+toolbin/Acrobat2Tiff/Acrobat2Tiff/Acrobat2Tiff.vb<br>
+toolbin/Acrobat2Tiff/Acrobat2Tiff/Acrobat2Tiff.vbproj<br>
+toolbin/Acrobat2Tiff/Acrobat2Tiff/Acrobat2Tiff/Application.Designer.vb<br>
+toolbin/Acrobat2Tiff/Acrobat2Tiff/Acrobat2Tiff/Resources.Designer.vb<br>
+toolbin/Acrobat2Tiff/Acrobat2Tiff/Acrobat2Tiff/Settings.Designer.vb<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 16:02:07 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8c7bd787defa071c96289b7da9397f673fddb874">8c7bd787defa071c96289b7da9397f673fddb874</a>
+<blockquote>
+<p>
+ txtwrite - address memory problems<br>
+<br>
+ Bug #702229 &quot; txtwrite: use after free in 9.51 on some files (regression from 9.50)&quot;<br>
+ Also bug #702346 and the earlier report #701877.<br>
+<br>
+ The problems occur because its possible for a single character code in<br>
+ a PDF file to map to more than a single Unicode code point. In the case<br>
+ of the file for 701877 the character code maps to 'f' and 'i' (it is an<br>
+ fi ligature).<br>
+<br>
+ The code should deal with this, but we need to ensure we are using the<br>
+ correct index. In addition, if we do get more Unicode code points than<br>
+ we expected, we need to set the widths of the 'extra' code points to<br>
+ zero (we only want to consider the width of the original character).<br>
+<br>
+ This does mean increasing the size of the Widths array to cater for<br>
+ the possibility of more entries on output than there were on input.<br>
+<br>
+ While working on it I noticed that the Unicode remapping on little-<br>
+ endian machines was reversing the order of the Unicode values, when<br>
+ there was more than a single code point returned, so fixed that at<br>
+ the same time.<br>
+<br>
+devices/vector/gdevtxtw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 12:44: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=be741930a01176ba8cfea1310866a1a1c69fa71c">be741930a01176ba8cfea1310866a1a1c69fa71c</a>
+<blockquote>
+<p>
+ Add yet another nmake version to the MSVC makefile.<br>
+<br>
+psi/msvc.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 11:23:18 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a10a03a4c9713b38c4cfcd07f0ba3c722778aae0">a10a03a4c9713b38c4cfcd07f0ba3c722778aae0</a>
+<blockquote>
+<p>
+ Rejig plftable.h<br>
+<br>
+ Rather than repeatedly including the same header to get multiple<br>
+ versions of the font table built in, build the font table just<br>
+ once with all the information in it.<br>
+<br>
+ This should be smaller (fractionally), and stop lgtm.com complaining.<br>
+<br>
+pcl/pcl/pcfontpg.c<br>
+pcl/pcl/pcfsel.c<br>
+pcl/pl/plftable.c<br>
+pcl/pl/plftable.h<br>
+pcl/pl/pllfont.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-20 12:15:12 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ffbaace78bacb0421ae11c5a8fdef51cbd829218">ffbaace78bacb0421ae11c5a8fdef51cbd829218</a>
+<blockquote>
+<p>
+ Tweak fapiufst code to build with UFST 7.1.x<br>
+<br>
+base/fapiufst.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-19 16:20: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=7e7fa21f9e378303df8d8529cc3a94676e433f40">7e7fa21f9e378303df8d8529cc3a94676e433f40</a>
+<blockquote>
+<p>
+ Exclude &quot;variable fonts&quot; from fontconfig search<br>
+<br>
+ Since we cannot used (and later skip over errors caused by) TTF variable<br>
+ fonts (a sort of illigitimate offspring of Multiple Master and TTF!) we<br>
+ may as well filter them out of our fontconfig search criteria.<br>
+<br>
+ Patch suggested by zdohnal@redhat.com<br>
+<br>
+base/gp_unix.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-19 18:43:48 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9f1b19d0634ad611dc73a8c05c13c88f42cb8730">9f1b19d0634ad611dc73a8c05c13c88f42cb8730</a>
+<blockquote>
+<p>
+ lgtm fixes: float * float -&gt; double<br>
+<br>
+ When we do float * float, and then use the result in a context<br>
+ where a double is expected, we implicitly cast the result of the<br>
+ multiplication to be a double. This means we can overflow<br>
+ the range of floats during the initial multiplication, when the<br>
+ result would quite easily fit into a float.<br>
+<br>
+ It's better to cast to double to start with, then do the<br>
+ multiplication (at the cost of potentially being slower - but<br>
+ not really that much slower these days).<br>
+<br>
+ In some cases I've opted NOT to change the operations (merely to<br>
+ make the casting explicit) so as to minimise diffs.<br>
+<br>
+base/gdevp14.c<br>
+base/gshtscr.c<br>
+base/gxshade.c<br>
+base/gxstroke.c<br>
+pcl/pxl/pxpaint.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-19 19:45: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=173e301c9908cf4656c462a89a146f7f1f5664f8">173e301c9908cf4656c462a89a146f7f1f5664f8</a>
+<blockquote>
+<p>
+ Fix &quot;integer constant overflow&quot; warning.<br>
+<br>
+base/gsptype1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-18 13:16:20 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ef0bc2a843783af2e5d76dadf801063ab6c785ef">ef0bc2a843783af2e5d76dadf801063ab6c785ef</a>
+<blockquote>
+<p>
+ Improve font copying for new PDF interpeter with pdfwrite<br>
+<br>
+ Since this commit:<br>
+<br>
+ http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=12c071547d<br>
+<br>
+ The 'copied font' stored by pdfwrite has maintained a pointer to the<br>
+ interpreter's 'dir' (FontDirectory) and used it to mark the names in<br>
+ the interpreter name table during GC pointer enumeration.<br>
+<br>
+ This doesn't work if the interpreter is pdfi and its working inside<br>
+ the Ghostscript PostScript interpreter, because the enumeration can<br>
+ take place after the pdfi interpreter has been destroyed. Its also not<br>
+ necessary in this case, because the pdfi name table can't be relocated.<br>
+<br>
+ But for complex reasons (see the lengthy comment in the code) it has a<br>
+ small but useful benefit when pdfwrite is being driven directly by the<br>
+ PostScript interpreter.<br>
+<br>
+ In order to avoid losing that benefit, we now only store a pointer to<br>
+ the interpreter's 'dir' member, and only mark the names during<br>
+ enumeration, if the memory allocator of the font is a garbage-collecting<br>
+ allocator.<br>
+<br>
+devices/gxfcopy.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-18 13:20: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=63df5adcad39572f94a0448c09598641c89f58db">63df5adcad39572f94a0448c09598641c89f58db</a>
+<blockquote>
+<p>
+ lgtm.com fix: int * int may overflow before being converted to size_t.<br>
+<br>
+base/gxdownscale.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-15 13:06: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=c170fa2fc7dfe79dced44d7b628129e5bc7dd045">c170fa2fc7dfe79dced44d7b628129e5bc7dd045</a>
+<blockquote>
+<p>
+ lgtm.com fixes: Don't define external functions in local scope.<br>
+<br>
+base/gxpcmap.c<br>
+pcl/pxl/pxfont.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-15 12:54: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=f8529a27e1c1768bd79ff19dfa7a29790ce9e275">f8529a27e1c1768bd79ff19dfa7a29790ce9e275</a>
+<blockquote>
+<p>
+ lgtm.com: Add comment to empty conditional block to stop warning.<br>
+<br>
+base/mkromfs.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-15 12:36: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=53b712ea02903910a19980b28fbf8ae6fc5bdade">53b712ea02903910a19980b28fbf8ae6fc5bdade</a>
+<blockquote>
+<p>
+ lgtm.com fixes: Avoid shadowing params with local vars.<br>
+<br>
+base/ets.c<br>
+base/gdevmem.c<br>
+base/gsfcmap1.c<br>
+pcl/pcl/rtraster.c<br>
+pcl/pl/pjparse.c<br>
+psi/imain.c<br>
+psi/zchar.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-15 11:43:13 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8d9df30a48ac272e92666d52fef62580aacabfd7">8d9df30a48ac272e92666d52fef62580aacabfd7</a>
+<blockquote>
+<p>
+ Bug 702248: Spelling problem in error message.<br>
+<br>
+Resource/Init/pdf_rbld.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-15 11:48:54 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=349d37844880567be4630e07c0518f6671300fc6">349d37844880567be4630e07c0518f6671300fc6</a>
+<blockquote>
+<p>
+ lgtm.com: Fix &quot;comparison is always false&quot; warning.<br>
+<br>
+psi/ziodev.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-15 11:48:07 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2f768243df42031a3f37f256678e34c1ac97fdde">2f768243df42031a3f37f256678e34c1ac97fdde</a>
+<blockquote>
+<p>
+ lgtm.com fixes: Multiplication of narrow type in wider context.<br>
+<br>
+base/claptrap-init.c<br>
+base/gdevdrop.c<br>
+base/gdevprn.c<br>
+base/gsfunc.c<br>
+base/gsicc_monitorcm.c<br>
+base/gxccache.c<br>
+base/gxclip2.c<br>
+base/gxclipm.c<br>
+base/gxclread.c<br>
+base/gxclrect.c<br>
+base/gxdownscale.c<br>
+base/gxfapi.c<br>
+base/gxhtbit.c<br>
+base/gxidata.c<br>
+base/gxipixel.c<br>
+base/gxshade4.c<br>
+base/sjbig2.c<br>
+base/sjbig2.h<br>
+pcl/pcl/pcsfont.c<br>
+pcl/pl/plchar.c<br>
+pcl/pxl/pximage.c<br>
+psi/zfapi.c<br>
+xps/xpsimage.c<br>
+xps/xpsjxr.c<br>
+xps/xpspng.c<br>
+xps/xpszip.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-14 21:00: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=b380ebb41878645d0d7bb2b07155667acac4fa99">b380ebb41878645d0d7bb2b07155667acac4fa99</a>
+<blockquote>
+<p>
+ lgtm.com fixes: Fix cases where comparisons are constant.<br>
+<br>
+base/gdevdflt.c<br>
+base/gdevp14.c<br>
+base/gen_ordered.c<br>
+base/gscsepr.c<br>
+base/gsmisc.c<br>
+base/gstiffio.c<br>
+base/gxcmap.c<br>
+base/gxdownscale.c<br>
+base/mkromfs.c<br>
+base/ttfmain.c<br>
+pcl/pl/realmain.c<br>
+pcl/pxl/pxfont.c<br>
+pcl/pxl/pxink.c<br>
+psi/imain.c<br>
+psi/ireclaim.c<br>
+psi/iscannum.c<br>
+psi/zcolor.c<br>
+psi/zfont.c<br>
+psi/zfsample.c<br>
+psi/zfunc4.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-13 16:52:42 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d578f2517bbc6261a0cf31f8e2e88b2990241c0a">d578f2517bbc6261a0cf31f8e2e88b2990241c0a</a>
+<blockquote>
+<p>
+ Fix 702400: Indeterminate SEGV due to GC confusion.<br>
+<br>
+ The GC 'clump_locate' macro relied on PTR_BETWEEN (yes, also a macro)<br>
+ but on Windows MSC_VER caused pointers to be compared using only the<br>
+ low 32-bits (unsigned long is 32-bits on Windows, even 64-bit).<br>
+<br>
+ Depending on addresses, and when the GC ran, this could result in the<br>
+ GC logic being confused about addresses. This change works with 32-bit<br>
+ Windows as well as 64-bit (and may not work with TURBOC on an OLD<br>
+ CPU with segment+offset addresses, but so what?).<br>
+<br>
+base/stdpre.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-13 10:20:29 -0700
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d703f355af5292e61dcd641332e249873ab5fb8a">d703f355af5292e61dcd641332e249873ab5fb8a</a>
+<blockquote>
+<p>
+ Bug702398 -- Fix several annotation w/no AP bugs<br>
+<br>
+ 1) In the case of an annotation with no BS or Border, the code was simply<br>
+ incorrect, causing an error that meant the annotation didn't render.<br>
+<br>
+ 2) annotation wasn't rendering if atan got error<br>
+<br>
+ Found this for a PolyLine case, but also fixed it for Line, just in case.<br>
+<br>
+ 3) Fix 1st LE in Polyline<br>
+<br>
+ It was calculating dx,dy backwards, so the angle was off by 180 degrees.<br>
+<br>
+ 4) Set the color for PolyLine annotation<br>
+<br>
+Resource/Init/pdf_draw.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-13 11:31: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=d767c9e3297623e6708fe1c6dcab0583989ef63c">d767c9e3297623e6708fe1c6dcab0583989ef63c</a>
+<blockquote>
+<p>
+ Assuage C++'s demands for whitespace in string literal concats.<br>
+<br>
+base/stdint_.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-11 18:05:50 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0ccf0e77b1ee8e10335c2a80ddb180c9b5a4f5b6">0ccf0e77b1ee8e10335c2a80ddb180c9b5a4f5b6</a>
+<blockquote>
+<p>
+ lgtm.com fixes: Narrow multiply -&gt; wider result.<br>
+<br>
+base/gsfcmap.c<br>
+base/gxhintn.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-12 13:58: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=bad9f11895cbb4c0f53b7b0ef8f3502789d81315">bad9f11895cbb4c0f53b7b0ef8f3502789d81315</a>
+<blockquote>
+<p>
+ graphics library - improve gx_cpath_copy<br>
+<br>
+ This function does not, currently, appear to be called from anywhere.<br>
+ For the new PDF interpreter we'd like to use it to copy the clip path(s)<br>
+ from the PostScript environment to the PDF environment, but there's a<br>
+ problem.<br>
+<br>
+ The problem is that the structures defining the list of rectangles are<br>
+ allocated using the same memory allocator as the source clip path, but<br>
+ when we come to free them, the destructor uses the memory allocator of<br>
+ the clip list. So if the destination clip path was using a different<br>
+ allocator from the source clip path, we will use the wrong allocator to<br>
+ try and free the memory.<br>
+<br>
+ Chris thinks this may be an attempt to cope with stack-based allocations<br>
+ of the clip path where the allocator is NULL. So to cope with that<br>
+ we use the existing code (allocator from the source clip path) if the<br>
+ destination clip path's allocator is NULL (stack based) and we use the<br>
+ destination clip path's allocator otherwise.<br>
+<br>
+base/gxcpath.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-11 11:08: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=ae6b0b0e768f618728f66580227fffc92896903c">ae6b0b0e768f618728f66580227fffc92896903c</a>
+<blockquote>
+<p>
+ Remove &quot;magic numbers&quot; from profile type selection<br>
+<br>
+base/gdevp14.c<br>
+base/gscms.h<br>
+base/gsequivc.c<br>
+base/gsicc.c<br>
+base/gsicc_cache.c<br>
+base/gsicc_manage.c<br>
+base/gstext.c<br>
+base/gxclthrd.c<br>
+base/gxcmap.c<br>
+base/gxiscale.c<br>
+devices/gdevjpeg.c<br>
+devices/gdevpdfimg.c<br>
+devices/gdevpng.c<br>
+devices/gdevtfnx.c<br>
+devices/gdevtifs.c<br>
+devices/gdevtsep.c<br>
+devices/vector/gdevxps.c<br>
+psi/zicc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-07 10:43: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=2bb52bc877645068977c17c8a433e5b959b51eba">2bb52bc877645068977c17c8a433e5b959b51eba</a>
+<blockquote>
+<p>
+ Spot overprint in RGB Blend color spaces<br>
+<br>
+ If the blending color space is RGB based,<br>
+ special consideration must be made for doing<br>
+ overprint with separation and devicen color spaces.<br>
+<br>
+ In particular if we are going out to a separation<br>
+ device we could have RGB+spot support but not<br>
+ if the separation color was a process name like<br>
+ Cyan.<br>
+<br>
+ Also implement the missing gxdso_pdf14_sep_device<br>
+ special operation.<br>
+<br>
+base/gdevdflt.c<br>
+base/gdevp14.c<br>
+base/gscdevn.c<br>
+base/gscspace.h<br>
+base/gsstate.c<br>
+base/gstext.c<br>
+base/gxblend.c<br>
+base/lib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-11 15:41:09 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a7def309186f123008dcedfc0a6b07b6328c9c13">a7def309186f123008dcedfc0a6b07b6328c9c13</a>
+<blockquote>
+<p>
+ lgtm.com: configuration file fixes.<br>
+<br>
+.lgtm.yml<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-11 00:57:18 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f03b3f51957fcaab6b953ba79bb32d2096ad49b">4f03b3f51957fcaab6b953ba79bb32d2096ad49b</a>
+<blockquote>
+<p>
+ lgtm.com fixes: Avoid narrow mult cast to longer type.<br>
+<br>
+ Avoid masking overflows through relying on implicit casting.<br>
+<br>
+base/gdevabuf.c<br>
+base/gdevdflt.c<br>
+base/gdevp14.c<br>
+base/gen_ordered.c<br>
+base/gsfcmap.c<br>
+base/gsfunc0.c<br>
+base/gsht.c<br>
+base/gshtscr.c<br>
+base/gsicc_create.c<br>
+base/gsptype1.c<br>
+base/gxblend1.c<br>
+base/gxdownscale.c<br>
+base/gxht_thresh.c<br>
+base/gxicolor.c<br>
+base/gximono.c<br>
+base/gxiscale.c<br>
+base/gxpcmap.c<br>
+base/sidscale.c<br>
+base/siscale.c<br>
+base/sjpx_openjpeg.c<br>
+devices/gdevdm24.c<br>
+devices/vector/gdevpdfg.c<br>
+devices/vector/gdevpsds.c<br>
+pcl/pcl/pglfill.c<br>
+pcl/pxl/pxpaint.c<br>
+xps/xpstiff.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-10 12:31: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=4c305cb14b76bebfe0e147bcd90f4cc2ec7482ac">4c305cb14b76bebfe0e147bcd90f4cc2ec7482ac</a>
+<blockquote>
+<p>
+ Add lgtm configuration file.<br>
+<br>
+.lgtm.yml<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-10 12:19:48 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9b89ef860f52a6ca9696559c39104feba41e1de8">9b89ef860f52a6ca9696559c39104feba41e1de8</a>
+<blockquote>
+<p>
+ lgtm.com fixes: gpdl tweaks.<br>
+<br>
+gpdl/jpgtop.c<br>
+gpdl/pngtop.c<br>
+gpdl/psitop.c<br>
+gpdl/tifftop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-09 17:42: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=b778f827810b9f14c758334dd94f3f8df4d27bd4">b778f827810b9f14c758334dd94f3f8df4d27bd4</a>
+<blockquote>
+<p>
+ lgtm.com fix: Use | not || when combining bitflags.<br>
+<br>
+base/gxclpath.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-09 17:49:36 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c2dbf6acdc8b86cc0d74ff74d222720558ceb397">c2dbf6acdc8b86cc0d74ff74d222720558ceb397</a>
+<blockquote>
+<p>
+ lgtm.com fix: Remove code for duplicated &quot;if&quot; condition.<br>
+<br>
+toolbin/halftone/ETS/ipview.html<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-09 17:45: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=d9b37029db10bdeaf5eaee00bac2eb0653644c77">d9b37029db10bdeaf5eaee00bac2eb0653644c77</a>
+<blockquote>
+<p>
+ lgtm.com tweak: Make it clear that something isn't a typo.<br>
+<br>
+ Use &quot;INTERPATCH_PADDING != 0&quot; rather than &quot;INTERPATCH_PADDING&quot; to<br>
+ avoid the appearance of a typo.<br>
+<br>
+base/gxshade6.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-09 17: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=8836aca9a03b99fc6f0ceb3994dbb78d442d634a">8836aca9a03b99fc6f0ceb3994dbb78d442d634a</a>
+<blockquote>
+<p>
+ lgtm.com: Miscellaneous fixes in support scripts.<br>
+<br>
+ Remove unused local variables, correct semicolon usage. Avoid<br>
+ &quot;return fn()&quot; where fn always returns None.<br>
+<br>
+pcl/tools/check_deps.py<br>
+pcl/tools/makeromttf.py<br>
+pcl/tools/pxlasm.py<br>
+pcl/tools/pxldis.py<br>
+pcl/tools/revlist.py<br>
+psi/msvc.mak<br>
+toolbin/gitlog2changelog.py<br>
+toolbin/halftone/ETS/ipview.html<br>
+toolbin/ocheck.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-09 12:35:27 +0100
+</strong>
+<br>Shailesh Mistry &lt;shailesh.mistry@hotmail.co.uk&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8620f18686d3350590894590264f4cd71ef3dccb">8620f18686d3350590894590264f4cd71ef3dccb</a>
+<blockquote>
+<p>
+ Bug 697545 : Prevent SEGV during pjl_set_init_from_defaults.<br>
+<br>
+ Prevent SEGV by propagating all error codes.<br>
+<br>
+ Error created using :-<br>
+ MEMENTO_FAILAT=25933 ./membin/gpcl6 -sDEVICE=pbmraw -dMaxBitmap=2000 -o /dev/null ./tests_private/pcl/pcl5efts/fts.0051<br>
+<br>
+pcl/pl/pjparse.c<br>
+pcl/pl/pjparse.h<br>
+pcl/pl/pjparsei.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-08 21:50:30 +0100
+</strong>
+<br>Shailesh Mistry &lt;shailesh.mistry@hotmail.co.uk&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9e553991e4c99814eb342d83b4fb42b5af457390">9e553991e4c99814eb342d83b4fb42b5af457390</a>
+<blockquote>
+<p>
+ Bug 697545 : Prevent numerous memory leaks.<br>
+<br>
+ Prevent memory leaks by propagating error codes and freeing loose objects.<br>
+<br>
+ Also resolve some compiler warnings.<br>
+<br>
+ Error created using :-<br>
+ MEMENTO_FAILAT=19484 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5efts/fts.0051<br>
+<br>
+base/gscspace.c<br>
+base/gxclrast.c<br>
+base/gxcpath.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-08 14:50:08 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a0a3ac239e990a76e937710dce75f3ace1e25be7">a0a3ac239e990a76e937710dce75f3ace1e25be7</a>
+<blockquote>
+<p>
+ lgtm.com issue: Add some missing &quot;repeat include&quot; guards.<br>
+<br>
+base/gximdecode.h<br>
+contrib/lips4/gdevlips.h<br>
+contrib/lips4/gdevlprn.h<br>
+devices/rinkj/evenbetter-rll.h<br>
+devices/rinkj/rinkj-byte-stream.h<br>
+devices/rinkj/rinkj-config.h<br>
+devices/rinkj/rinkj-device.h<br>
+devices/rinkj/rinkj-dither.h<br>
+devices/rinkj/rinkj-epson870.h<br>
+devices/rinkj/rinkj-screen-eb.h<br>
+devices/vector/gdevagl.h<br>
+devices/vector/gdevpdfg.h<br>
+ijs/ijs.h<br>
+ijs/ijs_client.h<br>
+jbig2dec/jbig2.h<br>
+lcms2mt/include/lcms2mt.h<br>
+lcms2mt/include/lcms2mt_plugin.h<br>
+lcms2mt/src/lcms2_internal.h<br>
+pcl/pcl/pgfdata.h<br>
+pcl/pl/plfapi.h<br>
+pcl/pl/plparams.h<br>
+pcl/pl/plufstlp.h<br>
+pcl/pl/plvocab.h<br>
+pcl/pxl/pxbfont.h<br>
+xps/ghostxps.h<br>
+xps/xpsfapi.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-08 12:23:26 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1883e1010c35da56bc47ad439b9e45401a3060da">1883e1010c35da56bc47ad439b9e45401a3060da</a>
+<blockquote>
+<p>
+ lgtm.com fix: Remove duplicate keys from enumeration.<br>
+<br>
+pcl/tools/pxlasm.py<br>
+pcl/tools/pxldis.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-07 18:30:02 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=95fe80c3c670f1f5200c21ea8df3e6139b711acc">95fe80c3c670f1f5200c21ea8df3e6139b711acc</a>
+<blockquote>
+<p>
+ lgtm.com fixes: Fix comparison of narrow loop var with wider limit.<br>
+<br>
+base/gxcmap.c<br>
+base/ttfmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-07 18:14: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=7592dd988af75e40f0e449e17905751a5117e4f5">7592dd988af75e40f0e449e17905751a5117e4f5</a>
+<blockquote>
+<p>
+ Fix implicit declaration of var in ETS support script.<br>
+<br>
+toolbin/halftone/ETS/ipview.html<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-07 18:12: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=de1f4bc1918fe1a972c3e8119f3c24266aff4cc4">de1f4bc1918fe1a972c3e8119f3c24266aff4cc4</a>
+<blockquote>
+<p>
+ Fix missing comma in pxlasm.py<br>
+<br>
+pcl/tools/pxlasm.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-07 17:48:08 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fa4eb803adf41c0353fd7efbb4b45321eb2dec06">fa4eb803adf41c0353fd7efbb4b45321eb2dec06</a>
+<blockquote>
+<p>
+ Tweak stream.h to avoid the use of &quot;template&quot;.<br>
+<br>
+ &quot;template&quot; is a reserved word in C++, and so this header won't<br>
+ compile when included from a .cpp file.<br>
+<br>
+base/stream.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-06 18:01:07 +0100
+</strong>
+<br>Shailesh Mistry &lt;shailesh.mistry@hotmail.co.uk&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=efd0b47fe66a99097e200d76be1a4846ae2ef692">efd0b47fe66a99097e200d76be1a4846ae2ef692</a>
+<blockquote>
+<p>
+ Bug 697545 : Prevent memory leak in gx_path_assign_free.<br>
+<br>
+ Prevent memory leak by freeing path on all errors.<br>
+<br>
+ Error created using :-<br>
+ MEMENTO_FAILAT=16246 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.2120<br>
+<br>
+base/gxpath.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-06 12:11:05 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6d7c22dd453515d3f3f74af695a08abed26f657b">6d7c22dd453515d3f3f74af695a08abed26f657b</a>
+<blockquote>
+<p>
+ lgtm.com fixes for ghostscript.<br>
+<br>
+ Avoid using the same header include guard in more than one file.<br>
+<br>
+ Use the correct format specifier in a printf-like error string<br>
+ in lcms2mt.<br>
+<br>
+contrib/gdevbjc_.h<br>
+lcms2mt/src/cmsio0.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-03 19:04:42 +0100
+</strong>
+<br>Shailesh Mistry &lt;shailesh.mistry@hotmail.co.uk&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1ad7ac685aa07b1dceb0bf9e28e68a47492fb920">1ad7ac685aa07b1dceb0bf9e28e68a47492fb920</a>
+<blockquote>
+<p>
+ Bug 697545 : Prevent SEGV in hpgl_LB.<br>
+<br>
+ Prevent SEGV by cleanly freeing stick fonts on all errors.<br>
+<br>
+ Error created using :-<br>
+ MEMENTO_FAILAT=15422 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.1920<br>
+<br>
+pcl/pcl/pglabel.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-04 10:29:06 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c34c60394ebf68356866c6160fd0f7dfa1c4d0ce">c34c60394ebf68356866c6160fd0f7dfa1c4d0ce</a>
+<blockquote>
+<p>
+ Coverity 957905<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-04 08:31:43 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=54e26f03a7403112463ad69874be9ab66cc4c863">54e26f03a7403112463ad69874be9ab66cc4c863</a>
+<blockquote>
+<p>
+ PDF interpreter - minor fixes<br>
+<br>
+ Remove what looks like a left-over debugging print, make a couple of<br>
+ indenting fixes.<br>
+<br>
+Resource/Init/pdf_ops.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-02 23:31:30 +0100
+</strong>
+<br>Shailesh Mistry &lt;shailesh.mistry@hotmail.co.uk&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=92dc0f411477a0b920eea64ab305e60d2755ac9d">92dc0f411477a0b920eea64ab305e60d2755ac9d</a>
+<blockquote>
+<p>
+ Bug 697545 : Prevent memory leaks in hpgl_fill_polyfill_background.<br>
+<br>
+ The code has been refactored to always call grestore to balance the gsave.<br>
+<br>
+ Error created using :-<br>
+ MEMENTO_FAILAT=19724 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.1890<br>
+<br>
+pcl/pcl/pgdraw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-02 12:58:21 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=160d2d57ebbe610b770206f6f9773d9300ca97f9">160d2d57ebbe610b770206f6f9773d9300ca97f9</a>
+<blockquote>
+<p>
+ Coverity 357907<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-02 12:25:59 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5b96425e2414dfb130490bf0da2a5e03da099951">5b96425e2414dfb130490bf0da2a5e03da099951</a>
+<blockquote>
+<p>
+ Fix mistake in debug print variable count<br>
+<br>
+base/gstrans.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-02 09:26:05 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1407aa54f6c2df62d432a9b895a0001e62defcd8">1407aa54f6c2df62d432a9b895a0001e62defcd8</a>
+<blockquote>
+<p>
+ Coverity 357906<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-02 13:33:04 +0100
+</strong>
+<br>Shailesh Mistry &lt;shailesh.mistry@hotmail.co.uk&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=339ddd9dba998b82d4b71bdaee456ee80408c24f">339ddd9dba998b82d4b71bdaee456ee80408c24f</a>
+<blockquote>
+<p>
+ Bug 697545 : Prevent memory leaks in hpgl_print_symbol_mode_char.<br>
+<br>
+ The code has been refactored to always call grestore to balance the gsave. The label buffer must<br>
+ always be destroyed if it was successfully initialised.<br>
+<br>
+ Error created using :-<br>
+ MEMENTO_FAILAT=18349 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.1850<br>
+<br>
+pcl/pcl/pglabel.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-01 16:24:38 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8c432810d36e24613b84f8506ab3929f9d13e612">8c432810d36e24613b84f8506ab3929f9d13e612</a>
+<blockquote>
+<p>
+ Squashed commit of the page_group branch<br>
+<br>
+ The issue this branch is trying to solve is to ensure<br>
+ that the alpha blending occurs in the proper page group<br>
+ color space. If the page group is CMYK and the device is<br>
+ RGB then the final alpha blend must occur prior to the<br>
+ color conversion. Currently with the head code this is<br>
+ not the case. This work required a significant rework<br>
+ of how the transparency group pop occurred since if it<br>
+ is the final group, the blend will not occur until the<br>
+ put_image operation. The group color handling was<br>
+ completely reworked and simplified. The reworked code<br>
+ now maintains a group_color object that is related to<br>
+ its own color rather than the parent as before.<br>
+<br>
+ In addition, during the push_device operation, a buffer<br>
+ is not created. Previously an entire page buffer was<br>
+ created. If we have a page group that is smaller than<br>
+ the whole page, this will save us in space. The downside<br>
+ of this is that we need to ensure we have a buffer in place<br>
+ when the first drawing operation occurs.<br>
+<br>
+ There were several issues with the bitrgbtags devices as<br>
+ well as the pngalpha and psdcmyk16 devices that had to<br>
+ be considered during the put_image operation.<br>
+ operation<br>
+<br>
+base/gdevdflt.c<br>
+base/gdevp14.c<br>
+base/gdevp14.h<br>
+base/gsicc_cache.c<br>
+base/gstparam.h<br>
+base/gstrans.c<br>
+base/gstrans.h<br>
+base/gxblend.h<br>
+base/gxblend1.c<br>
+base/gxdevsop.h<br>
+devices/devs.mak<br>
+devices/gdevpng.c<br>
+devices/vector/gdevpdft.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-05-01 12:17:18 +0100
+</strong>
+<br>Shailesh Mistry &lt;shailesh.mistry@hotmail.co.uk&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d41990615baaee9bba6ce7ae3e5a025a71744c51">d41990615baaee9bba6ce7ae3e5a025a71744c51</a>
+<blockquote>
+<p>
+ Bug 697545 : Prevent SEGV in pcl_pattern_RF.<br>
+<br>
+ The call to pl_dict_put will free the pattern if an error occurs so the pcl_pattern_free_pattern<br>
+ is not required. Freeing the pattern data is now handled here to prevent leaks and also to<br>
+ prevent double freeing.<br>
+<br>
+ Two typos were also cleared up.<br>
+<br>
+ Error created using :-<br>
+ MEMENTO_FAILAT=15000 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.1816<br>
+<br>
+pcl/pcl/pcuptrn.c<br>
+pcl/pcl/pglfill.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-29 20:43:17 +0100
+</strong>
+<br>Shailesh Mistry &lt;shailesh.mistry@hotmail.co.uk&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8ba1ead91f1c051df75302dc49531d9f2497ef51">8ba1ead91f1c051df75302dc49531d9f2497ef51</a>
+<blockquote>
+<p>
+ Bug 697545 : Prevent SEGV in hpgl_LB.<br>
+<br>
+ Update code to propagate error codes correctly and and clean up stick fonts.<br>
+<br>
+ Error created using :-<br>
+ MEMENTO_FAILAT=17298 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.1640<br>
+<br>
+pcl/pcl/pglabel.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-30 08:33:48 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2844006034232cb95fdd295d7fedf5fed8390a8e">2844006034232cb95fdd295d7fedf5fed8390a8e</a>
+<blockquote>
+<p>
+ PDF interpreter Ignore non-array Annots<br>
+<br>
+ Yet another customer file, so no bug report.<br>
+<br>
+ The supplied file is badly broken in several different ways. Most of<br>
+ these Ghostscript already coped with but the file contains a new fault<br>
+ we haven't seen before. The same object is referenced by different pages<br>
+ once as a Font dictionary and once as an Annots array.<br>
+<br>
+ Since the object is actually a font dictionary, the page referencing it<br>
+ as an array fails with an error, because it has the wrong type.<br>
+<br>
+ This commit simply ignores such errors and carries on, emitting the<br>
+ usual warning. Its a little involved as there are several places where<br>
+ we need to check the type of the object.<br>
+<br>
+Resource/Init/pdf_main.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-28 14:49:14 +0100
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=45920485627a943f07eea0c5b1243b5eb540b498">45920485627a943f07eea0c5b1243b5eb540b498</a>
+<blockquote>
+<p>
+ clusterpush.pl: added excludes for mupdf's mupdfwrap.py.<br>
+<br>
+ Also add mudrawpy product.<br>
+<br>
+toolbin/localcluster/clusterpush.pl<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-27 11:04: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=1b4c3669a20cb2b63e49300b03082b189acfe347">1b4c3669a20cb2b63e49300b03082b189acfe347</a>
+<blockquote>
+<p>
+ Bug 702364: Fix missing echogs dependencies<br>
+<br>
+contrib/contrib.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-27 10:36: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=9d2de2ee4c3858095d8dfb05cc7d113bf40d81c1">9d2de2ee4c3858095d8dfb05cc7d113bf40d81c1</a>
+<blockquote>
+<p>
+ Rename devices/contrib.mak to devices/dcontrib.mak<br>
+<br>
+ because we also have contrib/contrib.mak<br>
+<br>
+Makefile.in<br>
+base/unix-gcc.mak<br>
+base/winlib.mak<br>
+devices/dcontrib.mak<br>
+toolbin/headercompile.pl<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-27 10:20: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=f210e4c009f7d401767336a264c2e4b9cf668216">f210e4c009f7d401767336a264c2e4b9cf668216</a>
+<blockquote>
+<p>
+ Bug 702349: Fix symbol clash between lcms2mt and lcms2<br>
+<br>
+ Shared library (libgs) with lcms2mt could clash if the calling app also<br>
+ included lcms2.<br>
+<br>
+ Using gcc (or compatible) this builds lcms2mt using the -fvisibility=hidden<br>
+ option, so symbols are not exported.<br>
+<br>
+Makefile.in<br>
+base/lcms2mt.mak<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-23 18:23:17 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7c96228899ea05b40cdb31dc5a4c3f61aa0d39e6">7c96228899ea05b40cdb31dc5a4c3f61aa0d39e6</a>
+<blockquote>
+<p>
+ Fix Bug 702014: ps2epsi problems (regression?).<br>
+<br>
+ The ps2epsi and ps2epsi.ps were quite a mess, and relied on non-standard<br>
+ operators only available with -dNOSAFER since we made SAFER the default.<br>
+ Even running ps2epsi with -dNOSAFER (by export GS_OPTIONS=-dNOSAFER)<br>
+ had problems -- it could not even convert examples/colorcir.ps to EPSI<br>
+ (throwing an error about colorcirsave). Both of the aforementioned<br>
+ files are replaced with this commit, and the ps2epsi.bat and ps2epsi.cmd<br>
+ are updated to use the new ps2epsi.ps file<br>
+<br>
+ Also, input files with multiple pages were never correct since the preview<br>
+ was derived only from the first page. The ps2epsi.ps checks if the file is<br>
+ already an EPSF, then don't use eps2write on the input, but warn if the<br>
+ %%Pages comment indicates that there is more than a single page.<br>
+<br>
+ Note that -dNOOUTERSAVE is needed in the invocation so that if we use<br>
+ eps2write, the 'restore' will close the device and write the tempfile<br>
+ with the EPSF.<br>
+<br>
+ Then ps2epsi.ps reads the input file, capturing the BBox, stops after<br>
+ %%EndComments, removes any existing preview, constructs a new preview<br>
+ using the 'bit' device with appropriate parameters, writes the preview<br>
+ in the EPSI Preview format (using writehexstring) and then copies the<br>
+ remainder of the EPSF file to the output.<br>
+<br>
+ The ps2epsi.ps has some checking for valid invocation, since someone<br>
+ may try to use it without the scripts.<br>
+<br>
+ Since all of the actual conversion is done by the ps2epsi.ps, this change<br>
+ makes windows and linux produce equivalent files.<br>
+<br>
+lib/ps2epsi<br>
+lib/ps2epsi.bat<br>
+lib/ps2epsi.cmd<br>
+lib/ps2epsi.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-23 18:22:15 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=01b1eb1ef43952026ed8bf8728744522abfbfc19">01b1eb1ef43952026ed8bf8728744522abfbfc19</a>
+<blockquote>
+<p>
+ Fix gssetgs.bat to use either 32 or 64 bit executables (64-bit preferred).<br>
+<br>
+lib/gssetgs.bat<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-24 14:13:54 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f69f7a2c8b05c3f8a4e14d30453dcb599ca8b64d">f69f7a2c8b05c3f8a4e14d30453dcb599ca8b64d</a>
+<blockquote>
+<p>
+ Update msvc.mak to allow for new nmake version.<br>
+<br>
+psi/msvc.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-23 11:42: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=6a46e31d5005cf136679ac7c54cb91d91654710d">6a46e31d5005cf136679ac7c54cb91d91654710d</a>
+<blockquote>
+<p>
+ Document that gsapi_set_stdio doesn't affect devices<br>
+<br>
+ Using -sOutputFile=%stdout (counterintuitively) does not direct device output<br>
+ to the stdout handler callback set by gsapi_set_stdio().<br>
+<br>
+doc/API.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-17 16:22:06 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=60a535f9f49fece2761a1c0c8069f87f7514182c">60a535f9f49fece2761a1c0c8069f87f7514182c</a>
+<blockquote>
+<p>
+ Bug 702335: jbig2dec: Refill input buffer upon failure to parse segment header.<br>
+<br>
+ Before commit 2b2dcf4ccf401ed210f03c858b304994749fd2b3 there was<br>
+ a debug message when attempting to parse a a segment header and<br>
+ the data supplied to jbig2dec was not enough. Commit 2b2dcf4<br>
+ incorrectly changed the debug message into a fatal error message,<br>
+ due misinterpreting the message text as something that warranted<br>
+ a fatal error.<br>
+<br>
+ When data was supplied in chunks to jbig2_data_in() in repeated<br>
+ calls such that a segment header's referred-to segment numbers<br>
+ field straddled a chunk boundary then jbig2dec would indicate a<br>
+ fatal error. The file in bug 702335 caused this to happen.<br>
+<br>
+ Instead jbig2dec should be asking the caller for more data so<br>
+ that the entire segment header can be parsed during a single call<br>
+ to jbig2_data_in().<br>
+<br>
+ By convering the fatal error back to a a debug message the problem<br>
+ is resolved. The message itself is also rewored to clearly<br>
+ indicate that the situation is non-fatal and that the caller will<br>
+ be asked to provide more data.<br>
+<br>
+jbig2dec/jbig2_segment.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-16 05:05:21 -0700
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=85b1119bb3493608b1e84acfaa7b27a6e5259b43">85b1119bb3493608b1e84acfaa7b27a6e5259b43</a>
+<blockquote>
+<p>
+ Fix URF filter configuration code.<br>
+<br>
+ I was missing some quoting.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-15 10:22:05 +0100
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d845756b28a9cdadaf5374cc4fa130963ea65adc">d845756b28a9cdadaf5374cc4fa130963ea65adc</a>
+<blockquote>
+<p>
+ PDF interpreter - reject insane Tc values early<br>
+<br>
+ No bug report, the file is from a customer and confidential.<br>
+<br>
+ The file has been created by a bfo.com product, but then additionally<br>
+ modified by an unknown application. The problem is that the file<br>
+ contains this sequence:<br>
+<br>
+ 1 0 0 0.999999 21.6 9.900086 cm<br>
+ /R3 9 Tf -2147483647 Tc -0.39301 Tw<br>
+ 4.8 -21.95 Td<br>
+ [( )]TJ<br>
+<br>
+ The parameter supplied to Tc is clearly mad. Not invalid but it attempts<br>
+ to move the current point (after drawing the space) by 2,147,483,647<br>
+ unscaled text units. This works out at around 471 miles. Given that this<br>
+ value is the maximum negative 32-bit integer (0xFFFFFFFF) I doubt this<br>
+ is actually intentional.<br>
+<br>
+ The scaling by the CTM causes a limitcheck error when trying to draw<br>
+ the text. We could fix this by running the TJ in a stopped context<br>
+ but that would be expensive performance-wise because TJ is a very common<br>
+ operator.<br>
+<br>
+ Instead this commit checks that the result of Tc, when scaled by the<br>
+ CTM, will fit into our fixed-point representation. If it does not then<br>
+ we throw an error there and then. The PDF interpreter then catches that<br>
+ during the Tc operator (which is less commonly used than TJ) and emits<br>
+ a warning, while ignoring the Tc value.<br>
+<br>
+ This may, of course, result in incorrect output, though it seems<br>
+ unlikely given the size of the numbers involved, which is why we give<br>
+ the user a warning.<br>
+<br>
+Resource/Init/pdf_ops.ps<br>
+base/gsstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-10 15:35:02 -0700
+</strong>
+<br>ray &lt;Ray.Johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b503c46c124cf5aaa82a71e28f624f2ef2b71e71">b503c46c124cf5aaa82a71e28f624f2ef2b71e71</a>
+<blockquote>
+<p>
+ Bug 702320: Valgrind complains about UMR.<br>
+<br>
+ The file for this bug does show that the stroke_color stack based struct<br>
+ in not initialized. Init fill_color and stroke_color. This is probably a<br>
+ bug tail from the fill_stroke commit.<br>
+<br>
+ Also explicitly set 'zeros' to 0 to clarify the expected contents.<br>
+<br>
+base/gxclbits.c<br>
+base/gxclrast.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-10 18:04:14 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1b08043d16bb10d939e858ea8d650807301d6e05">1b08043d16bb10d939e858ea8d650807301d6e05</a>
+<blockquote>
+<p>
+ Remove some errant remains of Google analytics<br>
+<br>
+ The GA runes are now added by Apache when files are served from casper.<br>
+<br>
+doc/API.htm<br>
+doc/C-style.htm<br>
+doc/Commprod.htm<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-10 11:11: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=8f52736b546329ae2e3ad760f722eac0dec6994e">8f52736b546329ae2e3ad760f722eac0dec6994e</a>
+<blockquote>
+<p>
+ Update/augment ETS source copyrights<br>
+<br>
+base/ets.c<br>
+base/ets.h<br>
+base/ets_tm.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-09 18:07: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=cbb82ba4baaa2a9da11c603d742a58a51c4e50e1">cbb82ba4baaa2a9da11c603d742a58a51c4e50e1</a>
+<blockquote>
+<p>
+ Update copyright to 2020<br>
+<br>
+Resource/CIDFont/ArtifexBullet<br>
+Resource/ColorSpace/DefaultCMYK<br>
+Resource/ColorSpace/DefaultGray<br>
+Resource/ColorSpace/DefaultRGB<br>
+Resource/ColorSpace/TrivialCMYK<br>
+Resource/ColorSpace/sGray<br>
+Resource/ColorSpace/sRGB<br>
+Resource/Decoding/FCO_Dingbats<br>
+Resource/Decoding/FCO_Symbol<br>
+Resource/Decoding/FCO_Unicode<br>
+Resource/Decoding/FCO_Wingdings<br>
+Resource/Decoding/Latin1<br>
+Resource/Decoding/StandardEncoding<br>
+Resource/Decoding/Unicode<br>
+Resource/Encoding/CEEncoding<br>
+Resource/Encoding/ExpertEncoding<br>
+Resource/Encoding/ExpertSubsetEncoding<br>
+Resource/Encoding/NotDefEncoding<br>
+Resource/Encoding/Wingdings<br>
+Resource/Init/FCOfontmap-PCLPS2<br>
+Resource/Init/Fontmap.GS<br>
+Resource/Init/gs_agl.ps<br>
+Resource/Init/gs_btokn.ps<br>
+Resource/Init/gs_cff.ps<br>
+Resource/Init/gs_cidcm.ps<br>
+Resource/Init/gs_ciddc.ps<br>
+Resource/Init/gs_cidfm.ps<br>
+Resource/Init/gs_cidfn.ps<br>
+Resource/Init/gs_cidtt.ps<br>
+Resource/Init/gs_cmap.ps<br>
+Resource/Init/gs_cspace.ps<br>
+Resource/Init/gs_dbt_e.ps<br>
+Resource/Init/gs_diskn.ps<br>
+Resource/Init/gs_dps1.ps<br>
+Resource/Init/gs_dps2.ps<br>
+Resource/Init/gs_dscp.ps<br>
+Resource/Init/gs_epsf.ps<br>
+Resource/Init/gs_fapi.ps<br>
+Resource/Init/gs_fntem.ps<br>
+Resource/Init/gs_fonts.ps<br>
+Resource/Init/gs_frsd.ps<br>
+Resource/Init/gs_icc.ps<br>
+Resource/Init/gs_il1_e.ps<br>
+Resource/Init/gs_init.ps<br>
+Resource/Init/gs_lev2.ps<br>
+Resource/Init/gs_ll3.ps<br>
+Resource/Init/gs_mex_e.ps<br>
+Resource/Init/gs_mgl_e.ps<br>
+Resource/Init/gs_mro_e.ps<br>
+Resource/Init/gs_pdf_e.ps<br>
+Resource/Init/gs_pdfwr.ps<br>
+Resource/Init/gs_res.ps<br>
+Resource/Init/gs_resmp.ps<br>
+Resource/Init/gs_setpd.ps<br>
+Resource/Init/gs_statd.ps<br>
+Resource/Init/gs_std_e.ps<br>
+Resource/Init/gs_sym_e.ps<br>
+Resource/Init/gs_trap.ps<br>
+Resource/Init/gs_ttf.ps<br>
+Resource/Init/gs_typ32.ps<br>
+Resource/Init/gs_typ42.ps<br>
+Resource/Init/gs_type1.ps<br>
+Resource/Init/gs_wan_e.ps<br>
+Resource/Init/pdf_base.ps<br>
+Resource/Init/pdf_draw.ps<br>
+Resource/Init/pdf_font.ps<br>
+Resource/Init/pdf_main.ps<br>
+Resource/Init/pdf_ops.ps<br>
+Resource/Init/pdf_rbld.ps<br>
+Resource/Init/pdf_sec.ps<br>
+Resource/SubstCID/CNS1-WMode<br>
+Resource/SubstCID/GB1-WMode<br>
+Resource/SubstCID/Japan1-WMode<br>
+Resource/SubstCID/Korea1-WMode<br>
+arch/arch_autoconf.h.in<br>
+arch/windows-arm-msvc.h<br>
+arch/windows-x64-msvc.h<br>
+arch/windows-x86-msvc.h<br>
+base/all-arch.mak<br>
+base/assert_.h<br>
+base/bench.c<br>
+base/bobbin.c<br>
+base/bobbin.h<br>
+base/claptrap-impl.h<br>
+base/claptrap.c<br>
+base/claptrap.h<br>
+base/ctype_.h<br>
+base/dirent_.h<br>
+base/dos_.h<br>
+base/echogs.c<br>
+base/errno_.h<br>
+base/ets.h<br>
+base/ets_tm.h<br>
+base/expat.mak<br>
+base/fapi_bs.mak<br>
+base/fapi_ft.c<br>
+base/fapibstm.c<br>
+base/fapiufst.c<br>
+base/fcntl_.h<br>
+base/freetype.mak<br>
+base/gconf.c<br>
+base/gconf.h<br>
+base/gdbflags.h<br>
+base/gdebug.h<br>
+base/gdevabuf.c<br>
+base/gdevbbox.c<br>
+base/gdevbbox.h<br>
+base/gdevdbit.c<br>
+base/gdevdcrd.c<br>
+base/gdevdcrd.h<br>
+base/gdevddrw.c<br>
+base/gdevddrw.h<br>
+base/gdevdevn.c<br>
+base/gdevdevn.h<br>
+base/gdevdevnprn.h<br>
+base/gdevdflt.c<br>
+base/gdevdgbr.c<br>
+base/gdevdrop.c<br>
+base/gdevdsha.c<br>
+base/gdevemap.c<br>
+base/gdevepo.c<br>
+base/gdevepo.h<br>
+base/gdevflp.c<br>
+base/gdevflp.h<br>
+base/gdevhit.c<br>
+base/gdevkrnlsclass.c<br>
+base/gdevkrnlsclass.h<br>
+base/gdevm1.c<br>
+base/gdevm16.c<br>
+base/gdevm2.c<br>
+base/gdevm24.c<br>
+base/gdevm32.c<br>
+base/gdevm4.c<br>
+base/gdevm40.c<br>
+base/gdevm48.c<br>
+base/gdevm56.c<br>
+base/gdevm64.c<br>
+base/gdevm8.c<br>
+base/gdevmem.c<br>
+base/gdevmem.h<br>
+base/gdevmpla.c<br>
+base/gdevmpla.h<br>
+base/gdevmplt.c<br>
+base/gdevmplt.h<br>
+base/gdevmr1.c<br>
+base/gdevmr2n.c<br>
+base/gdevmr8n.c<br>
+base/gdevmrop.h<br>
+base/gdevmrun.c<br>
+base/gdevmrun.h<br>
+base/gdevmx.c<br>
+base/gdevnfwd.c<br>
+base/gdevoflt.c<br>
+base/gdevoflt.h<br>
+base/gdevp14.c<br>
+base/gdevp14.h<br>
+base/gdevpccm.c<br>
+base/gdevpccm.h<br>
+base/gdevpipe.c<br>
+base/gdevplnx.c<br>
+base/gdevplnx.h<br>
+base/gdevppla.c<br>
+base/gdevppla.h<br>
+base/gdevprn.c<br>
+base/gdevprn.h<br>
+base/gdevpxat.h<br>
+base/gdevpxen.h<br>
+base/gdevpxop.h<br>
+base/gdevrops.c<br>
+base/gdevsclass.c<br>
+base/gdevsclass.h<br>
+base/gdevvec.c<br>
+base/gdevvec.h<br>
+base/gen_ordered.c<br>
+base/gen_ordered.h<br>
+base/genarch.c<br>
+base/genconf.c<br>
+base/gendev.c<br>
+base/genht.c<br>
+base/gp.h<br>
+base/gp_dosfe.c<br>
+base/gp_dosfs.c<br>
+base/gp_dvx.c<br>
+base/gp_getnv.c<br>
+base/gp_mktmp.c<br>
+base/gp_msdll.c<br>
+base/gp_msdos.c<br>
+base/gp_mshdl.c<br>
+base/gp_mslib.c<br>
+base/gp_mspol.c<br>
+base/gp_msprn.c<br>
+base/gp_mswin.c<br>
+base/gp_mswin.h<br>
+base/gp_nsync.c<br>
+base/gp_ntfs.c<br>
+base/gp_nxpsprn.c<br>
+base/gp_os2.c<br>
+base/gp_os2.h<br>
+base/gp_os2fs.c<br>
+base/gp_os2pr.c<br>
+base/gp_os9.c<br>
+base/gp_paper.c<br>
+base/gp_psync.c<br>
+base/gp_stdia.c<br>
+base/gp_stdin.c<br>
+base/gp_strdl.c<br>
+base/gp_unifn.c<br>
+base/gp_unifs.c<br>
+base/gp_unix.c<br>
+base/gp_upapr.c<br>
+base/gp_vms.c<br>
+base/gp_wgetv.c<br>
+base/gp_win32.c<br>
+base/gp_winfs.c<br>
+base/gp_winfs2.c<br>
+base/gp_wpapr.c<br>
+base/gp_wsync.c<br>
+base/gp_wutf8.c<br>
+base/gp_wxpsprn.cpp<br>
+base/gpcheck.h<br>
+base/gpgetenv.h<br>
+base/gpmisc.c<br>
+base/gpmisc.h<br>
+base/gpsync.h<br>
+base/gs.mak<br>
+base/gs_dll_call.h<br>
+base/gs_mgl_e.h<br>
+base/gs_mro_e.h<br>
+base/gsalloc.c<br>
+base/gsalloc.h<br>
+base/gsargs.c<br>
+base/gsargs.h<br>
+base/gsbitcom.c<br>
+base/gsbitmap.h<br>
+base/gsbitops.c<br>
+base/gsbitops.h<br>
+base/gsbittab.c<br>
+base/gsbittab.h<br>
+base/gsccode.h<br>
+base/gsccolor.h<br>
+base/gscdef.c<br>
+base/gscdefs.h<br>
+base/gscdevn.c<br>
+base/gscdevn.h<br>
+base/gscedata.c<br>
+base/gscedata.h<br>
+base/gscencs.c<br>
+base/gscencs.h<br>
+base/gschar.c<br>
+base/gschar.h<br>
+base/gschar0.c<br>
+base/gscicach.c<br>
+base/gscicach.h<br>
+base/gscie.c<br>
+base/gscie.h<br>
+base/gsciemap.c<br>
+base/gscindex.h<br>
+base/gsclipsr.c<br>
+base/gsclipsr.h<br>
+base/gscms.h<br>
+base/gscolor.c<br>
+base/gscolor.h<br>
+base/gscolor1.c<br>
+base/gscolor1.h<br>
+base/gscolor2.c<br>
+base/gscolor2.h<br>
+base/gscolor3.c<br>
+base/gscolor3.h<br>
+base/gscompt.h<br>
+base/gscoord.c<br>
+base/gscoord.h<br>
+base/gscparam.c<br>
+base/gscpixel.c<br>
+base/gscpixel.h<br>
+base/gscpm.h<br>
+base/gscrd.c<br>
+base/gscrd.h<br>
+base/gscrdp.c<br>
+base/gscrdp.h<br>
+base/gscrypt1.c<br>
+base/gscrypt1.h<br>
+base/gscscie.c<br>
+base/gscsel.h<br>
+base/gscsepr.c<br>
+base/gscsepr.h<br>
+base/gscspace.c<br>
+base/gscspace.h<br>
+base/gscssub.c<br>
+base/gscssub.h<br>
+base/gsdcolor.h<br>
+base/gsdevice.c<br>
+base/gsdevice.h<br>
+base/gsdevmem.c<br>
+base/gsdll.h<br>
+base/gsdllwin.h<br>
+base/gsdparam.c<br>
+base/gsdps1.c<br>
+base/gsdsrc.c<br>
+base/gsdsrc.h<br>
+base/gsequivc.c<br>
+base/gsequivc.h<br>
+base/gserrors.h<br>
+base/gsexit.h<br>
+base/gsfcid.c<br>
+base/gsfcid2.c<br>
+base/gsfcmap.c<br>
+base/gsfcmap.h<br>
+base/gsfcmap1.c<br>
+base/gsflip.c<br>
+base/gsflip.h<br>
+base/gsfname.c<br>
+base/gsfname.h<br>
+base/gsfont.c<br>
+base/gsfont.h<br>
+base/gsfont0.c<br>
+base/gsfont0c.c<br>
+base/gsform1.h<br>
+base/gsftopts.h<br>
+base/gsfunc.c<br>
+base/gsfunc.h<br>
+base/gsfunc0.c<br>
+base/gsfunc0.h<br>
+base/gsfunc3.c<br>
+base/gsfunc3.h<br>
+base/gsfunc4.c<br>
+base/gsfunc4.h<br>
+base/gsgc.h<br>
+base/gsgcache.c<br>
+base/gsgcache.h<br>
+base/gsgdata.c<br>
+base/gsgdata.h<br>
+base/gsgstate.c<br>
+base/gsgstate.h<br>
+base/gshsb.c<br>
+base/gshsb.h<br>
+base/gsht.c<br>
+base/gsht.h<br>
+base/gsht1.c<br>
+base/gsht1.h<br>
+base/gshtscr.c<br>
+base/gshtx.c<br>
+base/gshtx.h<br>
+base/gsicc.c<br>
+base/gsicc.h<br>
+base/gsicc_cache.c<br>
+base/gsicc_cache.h<br>
+base/gsicc_cms.h<br>
+base/gsicc_create.c<br>
+base/gsicc_create.h<br>
+base/gsicc_lcms2.c<br>
+base/gsicc_lcms2mt.c<br>
+base/gsicc_manage.c<br>
+base/gsicc_manage.h<br>
+base/gsicc_monitorcm.c<br>
+base/gsicc_nocm.c<br>
+base/gsicc_profilecache.c<br>
+base/gsicc_profilecache.h<br>
+base/gsicc_replacecm.c<br>
+base/gsimage.c<br>
+base/gsimage.h<br>
+base/gsimpath.c<br>
+base/gsinit.c<br>
+base/gsio.h<br>
+base/gsiodev.c<br>
+base/gsiodevs.c<br>
+base/gsiodisk.c<br>
+base/gsioram.c<br>
+base/gsiorom.c<br>
+base/gsiorom.h<br>
+base/gsipar3x.h<br>
+base/gsiparam.h<br>
+base/gsiparm3.h<br>
+base/gsiparm4.h<br>
+base/gsjconf.h<br>
+base/gsjmorec.h<br>
+base/gslib.c<br>
+base/gslib.h<br>
+base/gslibctx.c<br>
+base/gslibctx.h<br>
+base/gsline.c<br>
+base/gsline.h<br>
+base/gslparam.h<br>
+base/gsmalloc.c<br>
+base/gsmalloc.h<br>
+base/gsmatrix.c<br>
+base/gsmatrix.h<br>
+base/gsmchunk.c<br>
+base/gsmchunk.h<br>
+base/gsmd5.c<br>
+base/gsmd5.h<br>
+base/gsmdebug.h<br>
+base/gsmemory.c<br>
+base/gsmemory.h<br>
+base/gsmemraw.h<br>
+base/gsmemret.c<br>
+base/gsmemret.h<br>
+base/gsmisc.c<br>
+base/gsnamecl.c<br>
+base/gsnamecl.h<br>
+base/gsncdummy.c<br>
+base/gsncdummy.h<br>
+base/gsnogc.c<br>
+base/gsnogc.h<br>
+base/gsnotify.c<br>
+base/gsnotify.h<br>
+base/gsovrc.c<br>
+base/gsovrc.h<br>
+base/gspaint.c<br>
+base/gspaint.h<br>
+base/gsparam.c<br>
+base/gsparam.h<br>
+base/gsparam2.c<br>
+base/gsparams.c<br>
+base/gsparams.h<br>
+base/gsparamx.c<br>
+base/gsparamx.h<br>
+base/gspath.c<br>
+base/gspath.h<br>
+base/gspath1.c<br>
+base/gspath2.h<br>
+base/gspcolor.c<br>
+base/gspcolor.h<br>
+base/gspenum.h<br>
+base/gspmdrv.c<br>
+base/gspmdrv.h<br>
+base/gspmdrv.rc<br>
+base/gsptype1.c<br>
+base/gsptype1.h<br>
+base/gsptype2.c<br>
+base/gsptype2.h<br>
+base/gsrect.h<br>
+base/gsrefct.h<br>
+base/gsromfs0.c<br>
+base/gsrop.c<br>
+base/gsrop.h<br>
+base/gsroprun.c<br>
+base/gsroprun1.h<br>
+base/gsroprun24.h<br>
+base/gsroprun8.h<br>
+base/gsropt.h<br>
+base/gsroptab.c<br>
+base/gsserial.c<br>
+base/gsserial.h<br>
+base/gsshade.c<br>
+base/gsshade.h<br>
+base/gssprintf.h<br>
+base/gsstate.c<br>
+base/gsstate.h<br>
+base/gsstrl.h<br>
+base/gsstrtok.h<br>
+base/gsstruct.h<br>
+base/gsstype.h<br>
+base/gstext.c<br>
+base/gstext.h<br>
+base/gstiffio.c<br>
+base/gstiffio.h<br>
+base/gstparam.h<br>
+base/gstrans.c<br>
+base/gstrans.h<br>
+base/gstrap.c<br>
+base/gstrap.h<br>
+base/gstype1.c<br>
+base/gstype1.h<br>
+base/gstype2.c<br>
+base/gstype42.c<br>
+base/gstypes.h<br>
+base/gsuid.h<br>
+base/gsutil.c<br>
+base/gsutil.h<br>
+base/gswin.rc<br>
+base/gsxfont.h<br>
+base/gx.h<br>
+base/gxacpath.c<br>
+base/gxalloc.h<br>
+base/gxalpha.h<br>
+base/gxarith.h<br>
+base/gxband.h<br>
+base/gxbcache.c<br>
+base/gxbcache.h<br>
+base/gxbitfmt.h<br>
+base/gxbitmap.h<br>
+base/gxbitops.h<br>
+base/gxblend.c<br>
+base/gxblend.h<br>
+base/gxblend1.c<br>
+base/gxccache.c<br>
+base/gxccman.c<br>
+base/gxcdevn.h<br>
+base/gxchar.c<br>
+base/gxchar.h<br>
+base/gxchrout.c<br>
+base/gxchrout.h<br>
+base/gxcht.c<br>
+base/gxcid.h<br>
+base/gxcie.h<br>
+base/gxcindex.h<br>
+base/gxclbits.c<br>
+base/gxcldev.h<br>
+base/gxclfile.c<br>
+base/gxclimag.c<br>
+base/gxclio.h<br>
+base/gxclip.c<br>
+base/gxclip.h<br>
+base/gxclip2.c<br>
+base/gxclip2.h<br>
+base/gxclipm.c<br>
+base/gxclipm.h<br>
+base/gxclipsr.h<br>
+base/gxclist.c<br>
+base/gxclist.h<br>
+base/gxcllzw.c<br>
+base/gxclmem.c<br>
+base/gxclmem.h<br>
+base/gxclpage.c<br>
+base/gxclpage.h<br>
+base/gxclpath.c<br>
+base/gxclpath.h<br>
+base/gxclrast.c<br>
+base/gxclread.c<br>
+base/gxclrect.c<br>
+base/gxclthrd.c<br>
+base/gxclthrd.h<br>
+base/gxclutil.c<br>
+base/gxclzlib.c<br>
+base/gxcmap.c<br>
+base/gxcmap.h<br>
+base/gxcolor2.h<br>
+base/gxcomp.h<br>
+base/gxcoord.h<br>
+base/gxcpath.c<br>
+base/gxcpath.h<br>
+base/gxcspace.h<br>
+base/gxctable.c<br>
+base/gxctable.h<br>
+base/gxcvalue.h<br>
+base/gxdcconv.c<br>
+base/gxdcconv.h<br>
+base/gxdcolor.c<br>
+base/gxdcolor.h<br>
+base/gxdda.h<br>
+base/gxdevbuf.h<br>
+base/gxdevcli.h<br>
+base/gxdevice.h<br>
+base/gxdevmem.h<br>
+base/gxdevndi.c<br>
+base/gxdevrop.h<br>
+base/gxdevsop.h<br>
+base/gxdht.h<br>
+base/gxdhtres.h<br>
+base/gxdhtserial.c<br>
+base/gxdhtserial.h<br>
+base/gxdither.h<br>
+base/gxdownscale.c<br>
+base/gxdownscale.h<br>
+base/gxdtfill.h<br>
+base/gxfapi.c<br>
+base/gxfapi.h<br>
+base/gxfapiu.c<br>
+base/gxfapiu.h<br>
+base/gxfarith.h<br>
+base/gxfcache.h<br>
+base/gxfcid.h<br>
+base/gxfcmap.h<br>
+base/gxfcmap1.h<br>
+base/gxfill.c<br>
+base/gxfill.h<br>
+base/gxfillsl.h<br>
+base/gxfilltr.h<br>
+base/gxfillts.h<br>
+base/gxfixed.h<br>
+base/gxfmap.h<br>
+base/gxfont.h<br>
+base/gxfont0.h<br>
+base/gxfont0c.h<br>
+base/gxfont1.h<br>
+base/gxfont42.h<br>
+base/gxfrac.h<br>
+base/gxftype.h<br>
+base/gxfunc.h<br>
+base/gxgetbit.h<br>
+base/gxgstate.h<br>
+base/gxhintn.c<br>
+base/gxhintn.h<br>
+base/gxhintn1.c<br>
+base/gxhldevc.c<br>
+base/gxhldevc.h<br>
+base/gxht.c<br>
+base/gxht.h<br>
+base/gxht_thresh.c<br>
+base/gxht_thresh.h<br>
+base/gxhtbit.c<br>
+base/gxhttile.h<br>
+base/gxhttype.h<br>
+base/gxi12bit.c<br>
+base/gxi16bit.c<br>
+base/gxiclass.h<br>
+base/gxicolor.c<br>
+base/gxidata.c<br>
+base/gxifast.c<br>
+base/gximag3x.c<br>
+base/gximag3x.h<br>
+base/gximage.c<br>
+base/gximage.h<br>
+base/gximage1.c<br>
+base/gximage3.c<br>
+base/gximage3.h<br>
+base/gximage4.c<br>
+base/gximask.c<br>
+base/gximask.h<br>
+base/gximdecode.c<br>
+base/gximono.c<br>
+base/gxiodev.h<br>
+base/gxiparam.h<br>
+base/gxipixel.c<br>
+base/gxiscale.c<br>
+base/gxline.h<br>
+base/gxlum.h<br>
+base/gxmatrix.h<br>
+base/gxmclip.c<br>
+base/gxmclip.h<br>
+base/gxobj.h<br>
+base/gxoprect.c<br>
+base/gxoprect.h<br>
+base/gxp1fill.c<br>
+base/gxp1impl.h<br>
+base/gxpaint.c<br>
+base/gxpaint.h<br>
+base/gxpath.c<br>
+base/gxpath.h<br>
+base/gxpath2.c<br>
+base/gxpcache.h<br>
+base/gxpcmap.c<br>
+base/gxpcolor.h<br>
+base/gxpcopy.c<br>
+base/gxpdash.c<br>
+base/gxpflat.c<br>
+base/gxrplane.h<br>
+base/gxsample.c<br>
+base/gxsample.h<br>
+base/gxsamplp.h<br>
+base/gxscanc.c<br>
+base/gxscanc.h<br>
+base/gxshade.c<br>
+base/gxshade.h<br>
+base/gxshade1.c<br>
+base/gxshade4.c<br>
+base/gxshade4.h<br>
+base/gxshade6.c<br>
+base/gxstate.h<br>
+base/gxstdio.h<br>
+base/gxstroke.c<br>
+base/gxsync.c<br>
+base/gxsync.h<br>
+base/gxtext.h<br>
+base/gxtmap.h<br>
+base/gxttf.h<br>
+base/gxttfb.c<br>
+base/gxttfb.h<br>
+base/gxtype1.c<br>
+base/gxtype1.h<br>
+base/gxxfont.h<br>
+base/gzacpath.h<br>
+base/gzcpath.h<br>
+base/gzht.h<br>
+base/gzline.h<br>
+base/gzpath.h<br>
+base/gzspotan.c<br>
+base/gzspotan.h<br>
+base/gzstate.h<br>
+base/ijs.mak<br>
+base/instcopy<br>
+base/jbig2.mak<br>
+base/jerror_.h<br>
+base/jmemcust.c<br>
+base/jmemcust.h<br>
+base/jpeg.mak<br>
+base/jpegxr.mak<br>
+base/lcms2.mak<br>
+base/lcms2mt.mak<br>
+base/lcups.mak<br>
+base/lcupsi.mak<br>
+base/ldf_jb2.mak<br>
+base/lib.mak<br>
+base/locale_.h<br>
+base/lwf_jp2.mak<br>
+base/malloc_.h<br>
+base/math_.h<br>
+base/memento.c<br>
+base/memento.h<br>
+base/memory_.h<br>
+base/mkromfs.c<br>
+base/msvccmd.mak<br>
+base/msvclib.mak<br>
+base/msvctail.mak<br>
+base/openjpeg.mak<br>
+base/openvms.mak<br>
+base/openvms.mmk<br>
+base/pack_ps.c<br>
+base/pcwin.mak<br>
+base/pipe_.h<br>
+base/png.mak<br>
+base/png_.h<br>
+base/ramfs.c<br>
+base/ramfs.h<br>
+base/sa85d.c<br>
+base/sa85d.h<br>
+base/sa85x.h<br>
+base/saes.c<br>
+base/saes.h<br>
+base/sarc4.c<br>
+base/sarc4.h<br>
+base/sbcp.c<br>
+base/sbcp.h<br>
+base/sbtx.h<br>
+base/scanchar.h<br>
+base/scantab.c<br>
+base/scf.h<br>
+base/scfd.c<br>
+base/scfdgen.c<br>
+base/scfdtab.c<br>
+base/scfe.c<br>
+base/scfetab.c<br>
+base/scfparam.c<br>
+base/scfx.h<br>
+base/scommon.h<br>
+base/sdcparam.c<br>
+base/sdcparam.h<br>
+base/sdct.h<br>
+base/sdctc.c<br>
+base/sdctd.c<br>
+base/sdcte.c<br>
+base/sddparam.c<br>
+base/sdeparam.c<br>
+base/seexec.c<br>
+base/setjmp_.h<br>
+base/sfilter.h<br>
+base/sfilter1.c<br>
+base/sfilter2.c<br>
+base/sfxboth.c<br>
+base/sfxcommon.c<br>
+base/sfxfd.c<br>
+base/sfxstdio.c<br>
+base/shc.c<br>
+base/shc.h<br>
+base/sidscale.c<br>
+base/sidscale.h<br>
+base/siinterp.c<br>
+base/siinterp.h<br>
+base/simscale.c<br>
+base/simscale.h<br>
+base/siscale.c<br>
+base/siscale.h<br>
+base/siscale_cal.c<br>
+base/sisparam.h<br>
+base/sjbig2.c<br>
+base/sjbig2.h<br>
+base/sjbig2_luratech.c<br>
+base/sjbig2_luratech.h<br>
+base/sjpeg.h<br>
+base/sjpegc.c<br>
+base/sjpegd.c<br>
+base/sjpege.c<br>
+base/sjpx_luratech.c<br>
+base/sjpx_luratech.h<br>
+base/sjpx_none.c<br>
+base/sjpx_openjpeg.c<br>
+base/sjpx_openjpeg.h<br>
+base/slzwc.c<br>
+base/slzwd.c<br>
+base/slzwe.c<br>
+base/slzwx.h<br>
+base/smd5.c<br>
+base/smd5.h<br>
+base/smtf.h<br>
+base/spdiff.c<br>
+base/spdiffx.h<br>
+base/spngp.c<br>
+base/spngpx.h<br>
+base/spprint.c<br>
+base/spprint.h<br>
+base/spsdf.c<br>
+base/spsdf.h<br>
+base/srdline.h<br>
+base/srld.c<br>
+base/srle.c<br>
+base/srlx.h<br>
+base/ssha2.c<br>
+base/ssha2.h<br>
+base/sstring.c<br>
+base/sstring.h<br>
+base/stat_.h<br>
+base/std.h<br>
+base/stdint_.h<br>
+base/stdio_.h<br>
+base/stdpre.h<br>
+base/stream.c<br>
+base/stream.h<br>
+base/strimpl.h<br>
+base/string_.h<br>
+base/strmio.c<br>
+base/strmio.h<br>
+base/stub.mak<br>
+base/szlibc.c<br>
+base/szlibd.c<br>
+base/szlibe.c<br>
+base/szlibx.h<br>
+base/szlibxx.h<br>
+base/tiff.mak<br>
+base/time_.h<br>
+base/ttcalc.c<br>
+base/ttcalc.h<br>
+base/ttcommon.h<br>
+base/ttconf.h<br>
+base/ttconfig.h<br>
+base/ttfinp.c<br>
+base/ttfinp.h<br>
+base/ttfmain.c<br>
+base/ttfmemd.c<br>
+base/ttfmemd.h<br>
+base/ttfoutl.h<br>
+base/ttfsfnt.h<br>
+base/ttinterp.c<br>
+base/ttinterp.h<br>
+base/ttload.c<br>
+base/ttload.h<br>
+base/ttmisc.h<br>
+base/ttobjs.c<br>
+base/ttobjs.h<br>
+base/tttables.h<br>
+base/tttype.h<br>
+base/tttypes.h<br>
+base/ugcclib.mak<br>
+base/unistd_.h<br>
+base/unix-aux.mak<br>
+base/unix-dll.mak<br>
+base/unix-end.mak<br>
+base/unix-gcc.mak<br>
+base/unixansi.mak<br>
+base/unixhead.mak<br>
+base/unixinst.mak<br>
+base/unixlink.mak<br>
+base/valgrind.h<br>
+base/version.mak<br>
+base/vms_x_fix.h<br>
+base/vmsmath.h<br>
+base/windows_.h<br>
+base/winlib.mak<br>
+base/winplat.mak<br>
+base/winrtsup.cpp<br>
+base/winrtsup.h<br>
+base/wrfont.c<br>
+base/wrfont.h<br>
+base/write_t1.c<br>
+base/write_t1.h<br>
+base/write_t2.c<br>
+base/write_t2.h<br>
+base/x_.h<br>
+base/zlib.mak<br>
+configure.ac<br>
+contrib/gdevadmp.c<br>
+devices/contrib.mak<br>
+devices/devs.mak<br>
+devices/gdev3852.c<br>
+devices/gdev4081.c<br>
+devices/gdev8510.c<br>
+devices/gdev8bcm.c<br>
+devices/gdev8bcm.h<br>
+devices/gdevatx.c<br>
+devices/gdevbit.c<br>
+devices/gdevbj10.c<br>
+devices/gdevbjc.h<br>
+devices/gdevbjcl.c<br>
+devices/gdevbjcl.h<br>
+devices/gdevbmp.c<br>
+devices/gdevbmp.h<br>
+devices/gdevbmpc.c<br>
+devices/gdevccr.c<br>
+devices/gdevcdj.c<br>
+devices/gdevcfax.c<br>
+devices/gdevchameleon.c<br>
+devices/gdevcif.c<br>
+devices/gdevclj.c<br>
+devices/gdevcljc.c<br>
+devices/gdevcmykog.c<br>
+devices/gdevcslw.c<br>
+devices/gdevdfax.c<br>
+devices/gdevdjet.c<br>
+devices/gdevdjtc.c<br>
+devices/gdevdljm.c<br>
+devices/gdevdljm.h<br>
+devices/gdevdm24.c<br>
+devices/gdevdsp.c<br>
+devices/gdevdsp.h<br>
+devices/gdevdsp2.h<br>
+devices/gdevepsc.c<br>
+devices/gdevepsn.c<br>
+devices/gdevescp.c<br>
+devices/gdevfax.c<br>
+devices/gdevfax.h<br>
+devices/gdevfpng.c<br>
+devices/gdevhl7x.c<br>
+devices/gdevicov.c<br>
+devices/gdevijs.c<br>
+devices/gdevimgn.c<br>
+devices/gdevjbig2.c<br>
+devices/gdevjpeg.c<br>
+devices/gdevjpx.c<br>
+devices/gdevl31s.c<br>
+devices/gdevlbp8.c<br>
+devices/gdevlj56.c<br>
+devices/gdevlp8k.c<br>
+devices/gdevlxm.c<br>
+devices/gdevmeds.c<br>
+devices/gdevmeds.h<br>
+devices/gdevmgr.c<br>
+devices/gdevmgr.h<br>
+devices/gdevmiff.c<br>
+devices/gdevn533.c<br>
+devices/gdevo182.c<br>
+devices/gdevokii.c<br>
+devices/gdevpbm.c<br>
+devices/gdevpcl.c<br>
+devices/gdevpcl.h<br>
+devices/gdevpcx.c<br>
+devices/gdevpdfimg.c<br>
+devices/gdevpe.c<br>
+devices/gdevperm.c<br>
+devices/gdevphex.c<br>
+devices/gdevpjet.c<br>
+devices/gdevplan.c<br>
+devices/gdevplib.c<br>
+devices/gdevplib.h<br>
+devices/gdevpm.h<br>
+devices/gdevpng.c<br>
+devices/gdevpsd.c<br>
+devices/gdevpsd.h<br>
+devices/gdevpsim.c<br>
+devices/gdevpxut.c<br>
+devices/gdevpxut.h<br>
+devices/gdevrinkj.c<br>
+devices/gdevsj48.c<br>
+devices/gdevsnfb.c<br>
+devices/gdevsppr.c<br>
+devices/gdevstc.c<br>
+devices/gdevstc.h<br>
+devices/gdevstc1.c<br>
+devices/gdevstc2.c<br>
+devices/gdevstc3.c<br>
+devices/gdevstc4.c<br>
+devices/gdevtfax.c<br>
+devices/gdevtfax.h<br>
+devices/gdevtfnx.c<br>
+devices/gdevtifs.c<br>
+devices/gdevtifs.h<br>
+devices/gdevtknk.c<br>
+devices/gdevtrac.c<br>
+devices/gdevtsep.c<br>
+devices/gdevupd.c<br>
+devices/gdevwpr2.c<br>
+devices/gdevx.c<br>
+devices/gdevx.h<br>
+devices/gdevxalt.c<br>
+devices/gdevxcf.c<br>
+devices/gdevxcmp.c<br>
+devices/gdevxcmp.h<br>
+devices/gdevxini.c<br>
+devices/gdevxres.c<br>
+devices/gxfcopy.c<br>
+devices/gxfcopy.h<br>
+devices/minftrsz.c<br>
+devices/minftrsz.h<br>
+devices/rinkj/evenbetter-rll.c<br>
+devices/rinkj/evenbetter-rll.h<br>
+devices/rinkj/rinkj-byte-stream.c<br>
+devices/rinkj/rinkj-byte-stream.h<br>
+devices/rinkj/rinkj-config.c<br>
+devices/rinkj/rinkj-config.h<br>
+devices/rinkj/rinkj-device.c<br>
+devices/rinkj/rinkj-device.h<br>
+devices/rinkj/rinkj-dither.c<br>
+devices/rinkj/rinkj-dither.h<br>
+devices/rinkj/rinkj-epson870.c<br>
+devices/rinkj/rinkj-epson870.h<br>
+devices/rinkj/rinkj-screen-eb.c<br>
+devices/rinkj/rinkj-screen-eb.h<br>
+devices/vector/gdevagl.c<br>
+devices/vector/gdevagl.h<br>
+devices/vector/gdevpdf.c<br>
+devices/vector/gdevpdfb.c<br>
+devices/vector/gdevpdfb.h<br>
+devices/vector/gdevpdfc.c<br>
+devices/vector/gdevpdfc.h<br>
+devices/vector/gdevpdfd.c<br>
+devices/vector/gdevpdfe.c<br>
+devices/vector/gdevpdfg.c<br>
+devices/vector/gdevpdfg.h<br>
+devices/vector/gdevpdfi.c<br>
+devices/vector/gdevpdfj.c<br>
+devices/vector/gdevpdfk.c<br>
+devices/vector/gdevpdfm.c<br>
+devices/vector/gdevpdfo.c<br>
+devices/vector/gdevpdfo.h<br>
+devices/vector/gdevpdfp.c<br>
+devices/vector/gdevpdfr.c<br>
+devices/vector/gdevpdft.c<br>
+devices/vector/gdevpdfu.c<br>
+devices/vector/gdevpdfv.c<br>
+devices/vector/gdevpdfx.h<br>
+devices/vector/gdevpdt.c<br>
+devices/vector/gdevpdt.h<br>
+devices/vector/gdevpdtb.c<br>
+devices/vector/gdevpdtb.h<br>
+devices/vector/gdevpdtc.c<br>
+devices/vector/gdevpdtd.c<br>
+devices/vector/gdevpdtd.h<br>
+devices/vector/gdevpdte.c<br>
+devices/vector/gdevpdtf.c<br>
+devices/vector/gdevpdtf.h<br>
+devices/vector/gdevpdti.c<br>
+devices/vector/gdevpdti.h<br>
+devices/vector/gdevpdts.c<br>
+devices/vector/gdevpdts.h<br>
+devices/vector/gdevpdtt.c<br>
+devices/vector/gdevpdtt.h<br>
+devices/vector/gdevpdtv.c<br>
+devices/vector/gdevpdtv.h<br>
+devices/vector/gdevpdtw.c<br>
+devices/vector/gdevpdtw.h<br>
+devices/vector/gdevpdtx.h<br>
+devices/vector/gdevpsdf.h<br>
+devices/vector/gdevpsdi.c<br>
+devices/vector/gdevpsdp.c<br>
+devices/vector/gdevpsds.c<br>
+devices/vector/gdevpsds.h<br>
+devices/vector/gdevpsdu.c<br>
+devices/vector/gdevpsf.h<br>
+devices/vector/gdevpsf1.c<br>
+devices/vector/gdevpsf2.c<br>
+devices/vector/gdevpsfm.c<br>
+devices/vector/gdevpsft.c<br>
+devices/vector/gdevpsfu.c<br>
+devices/vector/gdevpsfx.c<br>
+devices/vector/gdevpsu.c<br>
+devices/vector/gdevpsu.h<br>
+devices/vector/gdevpx.c<br>
+devices/vector/gdevtxtw.c<br>
+devices/vector/gdevxps.c<br>
+devices/vector/opdfread.ps<br>
+devices/vector/whitelst.c<br>
+devices/vector/whitelst.h<br>
+doc/API.htm<br>
+doc/C-style.htm<br>
+doc/Commprod.htm<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+gpdl/gpdl.mak<br>
+gpdl/jbig2top.c<br>
+gpdl/jp2ktop.c<br>
+gpdl/jpgtop.c<br>
+gpdl/pngtop.c<br>
+gpdl/psitop.c<br>
+gpdl/pspcl6_gcc.mak<br>
+gpdl/pspcl6_msvc.mak<br>
+gpdl/pwgtop.c<br>
+gpdl/tifftop.c<br>
+ijs/Makefile.am<br>
+ijs/configure.ac<br>
+ijs/ijs.c<br>
+ijs/ijs.h<br>
+ijs/ijs_client.c<br>
+ijs/ijs_client.h<br>
+ijs/ijs_client_example.c<br>
+ijs/ijs_exec_unix.c<br>
+ijs/ijs_exec_win.c<br>
+ijs/ijs_server.c<br>
+ijs/ijs_server_example.c<br>
+ijs/unistd_.h<br>
+ios/ios_arch-arm.h<br>
+ios/ios_arch-x86.h<br>
+jbig2dec/config_win32.h<br>
+jbig2dec/jbig2.c<br>
+jbig2dec/jbig2.h<br>
+jbig2dec/jbig2_arith.c<br>
+jbig2dec/jbig2_arith.h<br>
+jbig2dec/jbig2_arith_iaid.c<br>
+jbig2dec/jbig2_arith_iaid.h<br>
+jbig2dec/jbig2_arith_int.c<br>
+jbig2dec/jbig2_arith_int.h<br>
+jbig2dec/jbig2_generic.c<br>
+jbig2dec/jbig2_generic.h<br>
+jbig2dec/jbig2_halftone.c<br>
+jbig2dec/jbig2_halftone.h<br>
+jbig2dec/jbig2_huffman.c<br>
+jbig2dec/jbig2_huffman.h<br>
+jbig2dec/jbig2_hufftab.c<br>
+jbig2dec/jbig2_hufftab.h<br>
+jbig2dec/jbig2_image.c<br>
+jbig2dec/jbig2_image.h<br>
+jbig2dec/jbig2_image_pbm.c<br>
+jbig2dec/jbig2_image_png.c<br>
+jbig2dec/jbig2_image_rw.h<br>
+jbig2dec/jbig2_mmr.c<br>
+jbig2dec/jbig2_mmr.h<br>
+jbig2dec/jbig2_page.c<br>
+jbig2dec/jbig2_page.h<br>
+jbig2dec/jbig2_priv.h<br>
+jbig2dec/jbig2_refinement.c<br>
+jbig2dec/jbig2_refinement.h<br>
+jbig2dec/jbig2_segment.c<br>
+jbig2dec/jbig2_segment.h<br>
+jbig2dec/jbig2_symbol_dict.c<br>
+jbig2dec/jbig2_symbol_dict.h<br>
+jbig2dec/jbig2_text.c<br>
+jbig2dec/jbig2_text.h<br>
+jbig2dec/jbig2dec.c<br>
+jbig2dec/memcmp.c<br>
+jbig2dec/os_types.h<br>
+jbig2dec/pbm2png.c<br>
+lib/FCOfontmap-PCLPS3<br>
+lib/FCOfontmap-PS3<br>
+lib/Fontmap.ATB<br>
+lib/Fontmap.ATM<br>
+lib/Fontmap.OS2<br>
+lib/Fontmap.SGI<br>
+lib/Fontmap.Sol<br>
+lib/Fontmap.Ult<br>
+lib/Fontmap.VMS<br>
+lib/align.ps<br>
+lib/caption.ps<br>
+lib/cat.ps<br>
+lib/cid2code.ps<br>
+lib/docie.ps<br>
+lib/font2pcl.ps<br>
+lib/gs_ce_e.ps<br>
+lib/gs_il2_e.ps<br>
+lib/gs_kanji.ps<br>
+lib/gs_ksb_e.ps<br>
+lib/gs_lgo_e.ps<br>
+lib/gs_lgx_e.ps<br>
+lib/gs_wl1_e.ps<br>
+lib/gs_wl2_e.ps<br>
+lib/gs_wl5_e.ps<br>
+lib/gslp.ps<br>
+lib/gsnup.ps<br>
+lib/image-qa.ps<br>
+lib/jispaper.ps<br>
+lib/lines.ps<br>
+lib/mkcidfm.ps<br>
+lib/pdf2dsc.ps<br>
+lib/pdf_info.ps<br>
+lib/pfbtopfa.ps<br>
+lib/ppath.ps<br>
+lib/pphs.ps<br>
+lib/prfont.ps<br>
+lib/ps2ai.ps<br>
+lib/ps2epsi.ps<br>
+lib/rollconv.ps<br>
+lib/stcinfo.ps<br>
+lib/stcolor.ps<br>
+lib/stocht.ps<br>
+lib/traceimg.ps<br>
+lib/traceop.ps<br>
+lib/uninfo.ps<br>
+lib/viewcmyk.ps<br>
+lib/viewgif.ps<br>
+lib/viewmiff.ps<br>
+lib/viewpbm.ps<br>
+lib/viewpcx.ps<br>
+lib/viewps2a.ps<br>
+lib/viewraw.ps<br>
+lib/viewrgb.ps<br>
+lib/winmaps.ps<br>
+lib/zeroline.ps<br>
+pcl/pcl/pcbiptrn.c<br>
+pcl/pcl/pcbiptrn.h<br>
+pcl/pcl/pccid.c<br>
+pcl/pcl/pccid.h<br>
+pcl/pcl/pccolor.c<br>
+pcl/pcl/pccoord.h<br>
+pcl/pcl/pccprint.c<br>
+pcl/pcl/pccsbase.c<br>
+pcl/pcl/pccsbase.h<br>
+pcl/pcl/pcdict.h<br>
+pcl/pcl/pcdither.c<br>
+pcl/pcl/pcdither.h<br>
+pcl/pcl/pcdraw.c<br>
+pcl/pcl/pcdraw.h<br>
+pcl/pcl/pcfont.c<br>
+pcl/pcl/pcfont.h<br>
+pcl/pcl/pcfontpg.c<br>
+pcl/pcl/pcfontst.h<br>
+pcl/pcl/pcfrgrnd.c<br>
+pcl/pcl/pcfrgrnd.h<br>
+pcl/pcl/pcfsel.c<br>
+pcl/pcl/pcfsel.h<br>
+pcl/pcl/pcht.c<br>
+pcl/pcl/pcht.h<br>
+pcl/pcl/pcident.c<br>
+pcl/pcl/pcident.h<br>
+pcl/pcl/pcimpl.c<br>
+pcl/pcl/pcindxed.c<br>
+pcl/pcl/pcindxed.h<br>
+pcl/pcl/pcjob.c<br>
+pcl/pcl/pcl.mak<br>
+pcl/pcl/pcl_top.mak<br>
+pcl/pcl/pclookup.c<br>
+pcl/pcl/pclookup.h<br>
+pcl/pcl/pcmacros.c<br>
+pcl/pcl/pcmisc.c<br>
+pcl/pcl/pcmtx3.c<br>
+pcl/pcl/pcmtx3.h<br>
+pcl/pcl/pcommand.c<br>
+pcl/pcl/pcommand.h<br>
+pcl/pcl/pcpage.c<br>
+pcl/pcl/pcpage.h<br>
+pcl/pcl/pcpalet.c<br>
+pcl/pcl/pcpalet.h<br>
+pcl/pcl/pcparam.h<br>
+pcl/pcl/pcparse.c<br>
+pcl/pcl/pcparse.h<br>
+pcl/pcl/pcpatrn.c<br>
+pcl/pcl/pcpatrn.h<br>
+pcl/pcl/pcpattyp.h<br>
+pcl/pcl/pcpatxfm.c<br>
+pcl/pcl/pcpatxfm.h<br>
+pcl/pcl/pcrect.c<br>
+pcl/pcl/pcsfont.c<br>
+pcl/pcl/pcstate.h<br>
+pcl/pcl/pcstatus.c<br>
+pcl/pcl/pcsymbol.c<br>
+pcl/pcl/pcsymbol.h<br>
+pcl/pcl/pctext.c<br>
+pcl/pcl/pctop.c<br>
+pcl/pcl/pctop.h<br>
+pcl/pcl/pctpm.h<br>
+pcl/pcl/pcuptrn.c<br>
+pcl/pcl/pcuptrn.h<br>
+pcl/pcl/pcursor.c<br>
+pcl/pcl/pcursor.h<br>
+pcl/pcl/pcwhtidx.c<br>
+pcl/pcl/pcwhtidx.h<br>
+pcl/pcl/pcxfmst.h<br>
+pcl/pcl/pgchar.c<br>
+pcl/pcl/pgcolor.c<br>
+pcl/pcl/pgconfig.c<br>
+pcl/pcl/pgdraw.c<br>
+pcl/pcl/pgdraw.h<br>
+pcl/pcl/pgfdata.c<br>
+pcl/pcl/pgfdata.h<br>
+pcl/pcl/pgfont.c<br>
+pcl/pcl/pgfont.h<br>
+pcl/pcl/pgframe.c<br>
+pcl/pcl/pggeom.c<br>
+pcl/pcl/pggeom.h<br>
+pcl/pcl/pginit.c<br>
+pcl/pcl/pginit.h<br>
+pcl/pcl/pglabel.c<br>
+pcl/pcl/pglfill.c<br>
+pcl/pcl/pgmand.h<br>
+pcl/pcl/pgmisc.c<br>
+pcl/pcl/pgmisc.h<br>
+pcl/pcl/pgparse.c<br>
+pcl/pcl/pgpoly.c<br>
+pcl/pcl/pgstate.h<br>
+pcl/pcl/pgvector.c<br>
+pcl/pcl/rtgmode.c<br>
+pcl/pcl/rtgmode.h<br>
+pcl/pcl/rtmisc.c<br>
+pcl/pcl/rtmisc.h<br>
+pcl/pcl/rtraster.c<br>
+pcl/pcl/rtraster.h<br>
+pcl/pcl/rtrstcmp.c<br>
+pcl/pcl/rtrstcmp.h<br>
+pcl/pcl/rtrstst.h<br>
+pcl/pl/pjparse.c<br>
+pcl/pl/pjparse.h<br>
+pcl/pl/pjparsei.c<br>
+pcl/pl/pjtop.c<br>
+pcl/pl/pjtop.h<br>
+pcl/pl/pl.mak<br>
+pcl/pl/plalloc.c<br>
+pcl/pl/plapi.c<br>
+pcl/pl/plapi.h<br>
+pcl/pl/plchar.c<br>
+pcl/pl/plchar.h<br>
+pcl/pl/pldebug.h<br>
+pcl/pl/pldict.c<br>
+pcl/pl/pldict.h<br>
+pcl/pl/pldraw.c<br>
+pcl/pl/pldraw.h<br>
+pcl/pl/plfapi.c<br>
+pcl/pl/plfapi.h<br>
+pcl/pl/plfont.c<br>
+pcl/pl/plfont.h<br>
+pcl/pl/plftable.c<br>
+pcl/pl/plftable.h<br>
+pcl/pl/plht.c<br>
+pcl/pl/plht.h<br>
+pcl/pl/plimpl.c<br>
+pcl/pl/pllfont.c<br>
+pcl/pl/pllfont.h<br>
+pcl/pl/plmain.c<br>
+pcl/pl/plmain.h<br>
+pcl/pl/plparams.c<br>
+pcl/pl/plparams.h<br>
+pcl/pl/plparse.h<br>
+pcl/pl/plromfs.mak<br>
+pcl/pl/plsymbol.c<br>
+pcl/pl/plsymbol.h<br>
+pcl/pl/pltop.c<br>
+pcl/pl/pltop.h<br>
+pcl/pl/pluchar.c<br>
+pcl/pl/plufont.c<br>
+pcl/pl/plufstlp.c<br>
+pcl/pl/plufstlp.h<br>
+pcl/pl/plufstlp1.c<br>
+pcl/pl/plulfont.c<br>
+pcl/pl/plvalue.c<br>
+pcl/pl/plvalue.h<br>
+pcl/pl/plvocab.c<br>
+pcl/pl/plvocab.h<br>
+pcl/pl/plwimg.c<br>
+pcl/pl/plwimg.h<br>
+pcl/pl/plwmainc.c<br>
+pcl/pl/plwreg.c<br>
+pcl/pl/plwreg.h<br>
+pcl/pl/plwres.h<br>
+pcl/pl/realmain.c<br>
+pcl/pxl/pxasm.ps<br>
+pcl/pxl/pxattr.h<br>
+pcl/pxl/pxbfont.c<br>
+pcl/pxl/pxbfont.h<br>
+pcl/pxl/pxbfont.ps<br>
+pcl/pxl/pxcet.txt<br>
+pcl/pxl/pxdict.h<br>
+pcl/pxl/pxdiff.txt<br>
+pcl/pxl/pxenum.h<br>
+pcl/pxl/pxerrors.c<br>
+pcl/pxl/pxerrors.h<br>
+pcl/pxl/pxffont.c<br>
+pcl/pxl/pxfont.c<br>
+pcl/pxl/pxfont.h<br>
+pcl/pxl/pxfts.txt<br>
+pcl/pxl/pxgstate.c<br>
+pcl/pxl/pxgstate.h<br>
+pcl/pxl/pximage.c<br>
+pcl/pxl/pximpl.c<br>
+pcl/pxl/pxink.c<br>
+pcl/pxl/pxl.mak<br>
+pcl/pxl/pxlib.txt<br>
+pcl/pxl/pxoper.h<br>
+pcl/pxl/pxpaint.c<br>
+pcl/pxl/pxparse.c<br>
+pcl/pxl/pxparse.h<br>
+pcl/pxl/pxptable.c<br>
+pcl/pxl/pxptable.h<br>
+pcl/pxl/pxpthr.c<br>
+pcl/pxl/pxpthr.h<br>
+pcl/pxl/pxsessio.c<br>
+pcl/pxl/pxspec.txt<br>
+pcl/pxl/pxstate.c<br>
+pcl/pxl/pxstate.h<br>
+pcl/pxl/pxstream.c<br>
+pcl/pxl/pxsymbol.ps<br>
+pcl/pxl/pxsymbol.psc<br>
+pcl/pxl/pxsymbol.psh<br>
+pcl/pxl/pxtag.h<br>
+pcl/pxl/pxtop.c<br>
+pcl/pxl/pxvalue.c<br>
+pcl/pxl/pxvalue.h<br>
+pcl/tools/pxlasm.py<br>
+pcl/tools/pxldis.py<br>
+pcl/tools/suite.tcl<br>
+psi/bfont.h<br>
+psi/btoken.h<br>
+psi/dmmain.c<br>
+psi/dmmain.r<br>
+psi/dpmain.c<br>
+psi/dscparse.c<br>
+psi/dscparse.h<br>
+psi/dstack.h<br>
+psi/dwdll.c<br>
+psi/dwdll.h<br>
+psi/dwimg.c<br>
+psi/dwimg.h<br>
+psi/dwmain.c<br>
+psi/dwmain.rc<br>
+psi/dwmainc.c<br>
+psi/dwnodll.c<br>
+psi/dwreg.c<br>
+psi/dwreg.h<br>
+psi/dwres.h<br>
+psi/dwtext.c<br>
+psi/dwtext.h<br>
+psi/dwtrace.c<br>
+psi/dwtrace.h<br>
+psi/dxmain.c<br>
+psi/dxmainc.c<br>
+psi/estack.h<br>
+psi/files.h<br>
+psi/ghost.h<br>
+psi/gs.c<br>
+psi/gsdll.c<br>
+psi/gsdll2.rc<br>
+psi/gsdll32.rc<br>
+psi/gserver.c<br>
+psi/gsos2.rc<br>
+psi/ialloc.c<br>
+psi/ialloc.h<br>
+psi/iapi.c<br>
+psi/iapi.h<br>
+psi/iastate.h<br>
+psi/iastruct.h<br>
+psi/ibnum.c<br>
+psi/ibnum.h<br>
+psi/ichar.h<br>
+psi/ichar1.h<br>
+psi/icharout.h<br>
+psi/icid.h<br>
+psi/icie.h<br>
+psi/icolor.h<br>
+psi/iconf.c<br>
+psi/iconf.h<br>
+psi/icontext.c<br>
+psi/icontext.h<br>
+psi/icremap.h<br>
+psi/icsmap.h<br>
+psi/icstate.h<br>
+psi/iddict.h<br>
+psi/iddstack.h<br>
+psi/idebug.c<br>
+psi/idebug.h<br>
+psi/idict.c<br>
+psi/idict.h<br>
+psi/idictdef.h<br>
+psi/idicttpl.h<br>
+psi/idisp.c<br>
+psi/idisp.h<br>
+psi/idosave.h<br>
+psi/idparam.c<br>
+psi/idparam.h<br>
+psi/idsdata.h<br>
+psi/idstack.c<br>
+psi/idstack.h<br>
+psi/ierrors.h<br>
+psi/iesdata.h<br>
+psi/iestack.h<br>
+psi/ifapi.h<br>
+psi/ifcid.h<br>
+psi/ifilter.h<br>
+psi/ifilter2.h<br>
+psi/ifont.h<br>
+psi/ifont1.h<br>
+psi/ifont2.h<br>
+psi/ifont42.h<br>
+psi/ifrpred.h<br>
+psi/ifunc.h<br>
+psi/ifwpred.h<br>
+psi/igc.c<br>
+psi/igc.h<br>
+psi/igcref.c<br>
+psi/igcstr.c<br>
+psi/igcstr.h<br>
+psi/igstate.h<br>
+psi/iht.h<br>
+psi/iimage.h<br>
+psi/iinit.c<br>
+psi/iinit.h<br>
+psi/ilevel.h<br>
+psi/ilocate.c<br>
+psi/imain.c<br>
+psi/imain.h<br>
+psi/imainarg.c<br>
+psi/imainarg.h<br>
+psi/imemory.h<br>
+psi/iminst.h<br>
+psi/iname.c<br>
+psi/iname.h<br>
+psi/inamedef.h<br>
+psi/inameidx.h<br>
+psi/inames.h<br>
+psi/inamestr.h<br>
+psi/inobtokn.c<br>
+psi/inouparm.c<br>
+psi/int.mak<br>
+psi/interp.c<br>
+psi/interp.h<br>
+psi/iosdata.h<br>
+psi/iostack.h<br>
+psi/ipacked.h<br>
+psi/iparam.c<br>
+psi/iparam.h<br>
+psi/iparray.h<br>
+psi/ipcolor.h<br>
+psi/iplugin.c<br>
+psi/iplugin.h<br>
+psi/ireclaim.c<br>
+psi/iref.h<br>
+psi/isave.c<br>
+psi/isave.h<br>
+psi/iscan.c<br>
+psi/iscan.h<br>
+psi/iscanbin.c<br>
+psi/iscanbin.h<br>
+psi/iscannum.c<br>
+psi/iscannum.h<br>
+psi/isdata.h<br>
+psi/isstate.h<br>
+psi/istack.c<br>
+psi/istack.h<br>
+psi/istkparm.h<br>
+psi/istream.h<br>
+psi/istruct.h<br>
+psi/itoken.h<br>
+psi/iutil.c<br>
+psi/iutil.h<br>
+psi/iutil2.c<br>
+psi/iutil2.h<br>
+psi/ivmem2.h<br>
+psi/ivmspace.h<br>
+psi/main.h<br>
+psi/mkfilelt.cpp<br>
+psi/msvc.mak<br>
+psi/msvc32.mak<br>
+psi/msvc64.mak<br>
+psi/nsisinst.nsi<br>
+psi/oparc.h<br>
+psi/opcheck.h<br>
+psi/opdef.h<br>
+psi/oper.h<br>
+psi/opextern.h<br>
+psi/os2.mak<br>
+psi/ostack.h<br>
+psi/psapi.c<br>
+psi/psapi.h<br>
+psi/psromfs.mak<br>
+psi/store.h<br>
+psi/zalg.c<br>
+psi/zarith.c<br>
+psi/zarray.c<br>
+psi/zbfont.c<br>
+psi/zbseq.c<br>
+psi/zcfont.c<br>
+psi/zchar.c<br>
+psi/zchar1.c<br>
+psi/zchar2.c<br>
+psi/zchar32.c<br>
+psi/zchar42.c<br>
+psi/zchar42.h<br>
+psi/zcharout.c<br>
+psi/zcharx.c<br>
+psi/zcid.c<br>
+psi/zcie.c<br>
+psi/zcie.h<br>
+psi/zcolor.c<br>
+psi/zcolor.h<br>
+psi/zcolor1.c<br>
+psi/zcolor2.c<br>
+psi/zcolor3.c<br>
+psi/zcontrol.c<br>
+psi/zcrd.c<br>
+psi/zcsindex.c<br>
+psi/zcspixel.c<br>
+psi/zcssepr.c<br>
+psi/zdevcal.c<br>
+psi/zdevice.c<br>
+psi/zdevice2.c<br>
+psi/zdfilter.c<br>
+psi/zdict.c<br>
+psi/zdouble.c<br>
+psi/zdps1.c<br>
+psi/zdscpars.c<br>
+psi/zfaes.c<br>
+psi/zfapi.c<br>
+psi/zfarc4.c<br>
+psi/zfbcp.c<br>
+psi/zfcid.c<br>
+psi/zfcid0.c<br>
+psi/zfcid1.c<br>
+psi/zfcmap.c<br>
+psi/zfdctd.c<br>
+psi/zfdcte.c<br>
+psi/zfdecode.c<br>
+psi/zfile.c<br>
+psi/zfile.h<br>
+psi/zfile1.c<br>
+psi/zfileio.c<br>
+psi/zfilter.c<br>
+psi/zfilter2.c<br>
+psi/zfimscale.c<br>
+psi/zfjbig2.c<br>
+psi/zfjpx.c<br>
+psi/zfmd5.c<br>
+psi/zfont.c<br>
+psi/zfont0.c<br>
+psi/zfont1.c<br>
+psi/zfont2.c<br>
+psi/zfont32.c<br>
+psi/zfont42.c<br>
+psi/zfontenum.c<br>
+psi/zform.c<br>
+psi/zfproc.c<br>
+psi/zfrsd.c<br>
+psi/zfrsd.h<br>
+psi/zfsample.c<br>
+psi/zfsha2.c<br>
+psi/zfunc.c<br>
+psi/zfunc.h<br>
+psi/zfunc0.c<br>
+psi/zfunc3.c<br>
+psi/zfunc4.c<br>
+psi/zfzlib.c<br>
+psi/zgeneric.c<br>
+psi/zgstate.c<br>
+psi/zht.c<br>
+psi/zht1.c<br>
+psi/zht2.c<br>
+psi/zht2.h<br>
+psi/zicc.c<br>
+psi/zicc.h<br>
+psi/zimage.c<br>
+psi/zimage3.c<br>
+psi/ziodev.c<br>
+psi/ziodev2.c<br>
+psi/ziodevsc.c<br>
+psi/zmath.c<br>
+psi/zmatrix.c<br>
+psi/zmedia2.c<br>
+psi/zmisc.c<br>
+psi/zmisc1.c<br>
+psi/zmisc2.c<br>
+psi/zmisc3.c<br>
+psi/zncdummy.c<br>
+psi/zpacked.c<br>
+psi/zpaint.c<br>
+psi/zpath.c<br>
+psi/zpath1.c<br>
+psi/zpcolor.c<br>
+psi/zpdf_r6.c<br>
+psi/zpdfops.c<br>
+psi/zrelbit.c<br>
+psi/zshade.c<br>
+psi/zstack.c<br>
+psi/zstring.c<br>
+psi/zsysvm.c<br>
+psi/ztoken.c<br>
+psi/ztrans.c<br>
+psi/ztrap.c<br>
+psi/ztype.c<br>
+psi/zupath.c<br>
+psi/zusparam.c<br>
+psi/zutf8.c<br>
+psi/zvmem.c<br>
+psi/zvmem2.c<br>
+psi/zwinutf8.c<br>
+toolbin/GenSubstCID.ps<br>
+toolbin/afmutil.py<br>
+toolbin/color/icc_creator/ICC_Creator/CIELAB.h<br>
+toolbin/color/icc_creator/ICC_Creator/ICC_Creator.cpp<br>
+toolbin/color/icc_creator/ICC_Creator/ICC_Creator.h<br>
+toolbin/color/icc_creator/ICC_Creator/ICC_CreatorDlg.cpp<br>
+toolbin/color/icc_creator/ICC_Creator/ICC_CreatorDlg.h<br>
+toolbin/color/icc_creator/ICC_Creator/icc_create.cpp<br>
+toolbin/color/icc_creator/ICC_Creator/icc_create.h<br>
+toolbin/color/icc_creator/README.txt<br>
+toolbin/encs2c.ps<br>
+toolbin/errlist.tcl<br>
+toolbin/extractFonts.ps<br>
+toolbin/extractICCprofiles.ps<br>
+toolbin/gen_ldf_jb2.py<br>
+toolbin/genfontmap.ps<br>
+toolbin/gitlog2changelog.py<br>
+toolbin/gsmake.tcl<br>
+toolbin/halftone/gen_ordered/gen_ordered_main.c<br>
+toolbin/halftone/gen_stochastic/gen_stochastic.c<br>
+toolbin/headers.tcl<br>
+toolbin/jpxtopdf.c<br>
+toolbin/leaks.tcl<br>
+toolbin/makehist.tcl<br>
+toolbin/memory.py<br>
+toolbin/ocheck.py<br>
+toolbin/pre.tcl<br>
+toolbin/precheck.tcl<br>
+toolbin/split_changelog.py<br>
+toolbin/suite.tcl<br>
+toolbin/tests/build_revision.py<br>
+toolbin/tests/check_all.py<br>
+toolbin/tests/check_comments.py<br>
+toolbin/tests/check_dirs.py<br>
+toolbin/tests/check_docrefs.py<br>
+toolbin/tests/cmpi.py<br>
+toolbin/tests/compare_checksumdb.py<br>
+toolbin/tests/compare_checksums.py<br>
+toolbin/tests/dump_checksum.py<br>
+toolbin/tests/dump_checksum_plus.py<br>
+toolbin/tests/dump_checksum_raw.py<br>
+toolbin/tests/fuzzy.c<br>
+toolbin/tests/get_baseline_log.py<br>
+toolbin/tests/get_baselines.py<br>
+toolbin/tests/gscheck_all.py<br>
+toolbin/tests/gscheck_fuzzypdf.py<br>
+toolbin/tests/gscheck_pdfwrite.py<br>
+toolbin/tests/gscheck_raster.py<br>
+toolbin/tests/gscheck_testfiles.py<br>
+toolbin/tests/gsconf.py<br>
+toolbin/tests/gsparamsets.py<br>
+toolbin/tests/gssum.py<br>
+toolbin/tests/gstestgs.py<br>
+toolbin/tests/gstestutils.py<br>
+toolbin/tests/gsutil.py<br>
+toolbin/tests/make_baselinedb.py<br>
+toolbin/tests/make_testdb.py<br>
+toolbin/tests/make_two_pdfversions<br>
+toolbin/tests/make_two_versions<br>
+toolbin/tests/myoptparse.py<br>
+toolbin/tests/rasterdb.py<br>
+toolbin/tests/revert_baseline<br>
+toolbin/tests/revert_pdfbaseline<br>
+toolbin/tests/run_nightly.py<br>
+toolbin/tests/run_parallel<br>
+toolbin/tests/run_regression.py<br>
+toolbin/tests/testdiff.py<br>
+toolbin/tests/update_baseline.py<br>
+toolbin/tests/update_specific<br>
+toolbin/tmake.tcl<br>
+xps/ghostxps.h<br>
+xps/xps.mak<br>
+xps/xpsanalyze.c<br>
+xps/xpscff.c<br>
+xps/xpscolor.c<br>
+xps/xpscommon.c<br>
+xps/xpscrc.c<br>
+xps/xpsdoc.c<br>
+xps/xpsfapi.c<br>
+xps/xpsfapi.h<br>
+xps/xpsfont.c<br>
+xps/xpsglyphs.c<br>
+xps/xpsgradient.c<br>
+xps/xpshash.c<br>
+xps/xpsimage.c<br>
+xps/xpsjpeg.c<br>
+xps/xpsjxr.c<br>
+xps/xpsmem.c<br>
+xps/xpsopacity.c<br>
+xps/xpspage.c<br>
+xps/xpspath.c<br>
+xps/xpspng.c<br>
+xps/xpsresource.c<br>
+xps/xpsromfs.mak<br>
+xps/xpstiff.c<br>
+xps/xpstile.c<br>
+xps/xpstop.c<br>
+xps/xpsttf.c<br>
+xps/xpsutf.c<br>
+xps/xpsvisual.c<br>
+xps/xpsxml.c<br>
+xps/xpszip.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-09 09:40:05 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=87688cd48fb52c305e159b785bd184232426a766">87688cd48fb52c305e159b785bd184232426a766</a>
+<blockquote>
+<p>
+ Bug 702322: fix uninitalized data reads<br>
+<br>
+ gs_scan_token() keeps a local copy of the scanner state, and copies from and to<br>
+ the scanner state that is passed into it. There are several code paths that<br>
+ can leave some important entries in the structure uninitalized when we copy the<br>
+ local copy to the parameter.<br>
+<br>
+ This just ensures those specific entries are always set to *something* sane.<br>
+<br>
+psi/iscan.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-09 09:07:38 +0100
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c96962212ed44463b3bd5cf34f3f790e9d14cd0b">c96962212ed44463b3bd5cf34f3f790e9d14cd0b</a>
+<blockquote>
+<p>
+ Clarify path matching for SAFER controls<br>
+<br>
+ Make it explicit that the 'form' of the paths (e.g. absolute vs relative) must<br>
+ match between --permit-file-* paramters and the actual path used to reference<br>
+ the file<br>
+<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-08 16:06: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=ebabebad34a3811230b7bfe351eface7f5efc8a9">ebabebad34a3811230b7bfe351eface7f5efc8a9</a>
+<blockquote>
+<p>
+ PostScript interpreter - don't leave A85Decode pdf_rules uninitialised<br>
+<br>
+ Bug #702319 &quot;Read of uninitialized value according to valgrind...&quot;<br>
+<br>
+ There are a number of other bugs which relate to this particular problem:<br>
+ 690976, 692983 and 693485. The problem has come about as a cumulative<br>
+ result of working on these bugs.<br>
+<br>
+ Starting with commit :<br>
+ http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=e0ecca32ecd12dae3310fac4b65dc224031c85a2<br>
+ for bug 690976 a new flag 'pdf_rules' was added to the Ascii85Decode<br>
+ state. This is initialised from the dictionary operand in PostScript<br>
+ by zA85D() in zfdecode.c. When this flag is true the ASCII85Decode<br>
+ filter will silently accept just '~' as a valid termination for a string<br>
+ (should be '~&gt;').<br>
+<br>
+ However this is not the only way to initialise an Ascii85Decode filter,<br>
+ the PostScript token scanner can also use s_A85D_init_inline() which<br>
+ does not initialise the flag. From this point we have the potential<br>
+ for testing an unitialised variable in s_A85D_process(), if we get an<br>
+ encoded string which terminates with a '~' and the filter was<br>
+ instantiated from PostScript.<br>
+<br>
+ When fixing bug 692983, this commit:<br>
+ http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d561224d1495321d40012230abbcf835b298f557<br>
+<br>
+ Alex specifically added a comment that pdf_rules must not be initialised<br>
+ in s_A85D_init_inline() but didn't say why! The reason is that the<br>
+ regular stream initialisation code (s_A85D-init) also uses this inline<br>
+ function, so if it altered pdf_rules it would overwrite the value<br>
+ previously set by zA85D().<br>
+<br>
+ Since the initialisation is done in two places, the only way to fix this<br>
+ is to initialise pdf_rules in gs_scan_token() which this commit duly<br>
+ does. I've also added comments in s_A85D_init_inline to explain more<br>
+ clearly *why* pdf_rules must not be initialised here.<br>
+<br>
+base/sa85d.h<br>
+psi/iscan.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-31 08:26:37 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=668917a10e7eada030f7d2dddec9f579fddeed3d">668917a10e7eada030f7d2dddec9f579fddeed3d</a>
+<blockquote>
+<p>
+ Change MaxLocalVM and MaxGlobalVM to be size_t instead of 'long'<br>
+<br>
+ The sizeof long differs between 64-bit Windows and linux, and<br>
+ Robin changed the Max values for other params to be size_t in<br>
+ commit d7961033. This change extends that to the other memory<br>
+ size related params.<br>
+<br>
+ Also fix vm_threshold to be int64_t, not size_t since that<br>
+ corresponds to the parameter setting in zusparam.c. This is<br>
+ also limited to the max signed value that corresponds to<br>
+ size_t (MAX_VM_THRESHOLD) in case size_t is &lt; 64 bits.<br>
+<br>
+base/gsalloc.c<br>
+base/gsalloc.h<br>
+base/std.h<br>
+psi/ireclaim.c<br>
+psi/ivmem2.h<br>
+psi/zusparam.c<br>
+psi/zvmem2.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-05 12:24:36 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d8ed6363166841dcb067d7adc6ad6b52a1b1f90c">d8ed6363166841dcb067d7adc6ad6b52a1b1f90c</a>
+<blockquote>
+<p>
+ jbig2dec: Initiate variable before avoids using uninited data during cleanup.<br>
+<br>
+ Fixes OSS-fuzz issue 21571.<br>
+ Also fixes Coverity CID 355467.<br>
+<br>
+ Thanks to OSS-fuzz for reporting.<br>
+<br>
+jbig2dec/jbig2_text.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-27 05:41:07 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dc6b8098b52db7e1a9b20c1ef6f1006555c04b1b">dc6b8098b52db7e1a9b20c1ef6f1006555c04b1b</a>
+<blockquote>
+<p>
+ jbig2dec: Adjust number of bytes consumed by MMR decoder.<br>
+<br>
+ The MMR decoder pre-buffers up to 32 bits of encoded input data in a word<br>
+ buffer before they are consumed by the MMR decoder. Once bits are consumed, the<br>
+ pre-buffer will be filled up with more input data. When filling up the buffer<br>
+ the decoder would previously stay clear of reading data belonging to succeeding<br>
+ segments, but still indicated that it consumed those bytes it never read. Once<br>
+ finished the MMR decoder lied to the caller by propagating the incorrect number<br>
+ of consumed bytes. The caller subtracted the consumed number of bytes from the<br>
+ size and end up in underflow causing the next MMR decoding to first read input<br>
+ data at the wrong location, later ending up attempting to read outside the MMR<br>
+ encoded input buffer.<br>
+<br>
+ Now, the MMR decoder keeps track of how many bits it has consumed and<br>
+ accurately rounds this number up to a whole number of bytes to the caller.<br>
+<br>
+ Fixes OSS-fuzz issue 17855.<br>
+<br>
+ Thanks to OSS-fuzz for reporting.<br>
+<br>
+jbig2dec/jbig2_mmr.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-26 14:20:11 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f14f35c6e3218554cd351b848447cfa83b3c4256">f14f35c6e3218554cd351b848447cfa83b3c4256</a>
+<blockquote>
+<p>
+ jbig2dec: Plug leak of image upon error.<br>
+<br>
+ Fixes OSS-Fuzz issue 17513.<br>
+<br>
+ Thanks to OSS-fuzz for reporting.<br>
+<br>
+jbig2dec/jbig2_text.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-25 01:12:52 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d293095a593f7106e16027fb9782324ee7bb36f8">d293095a593f7106e16027fb9782324ee7bb36f8</a>
+<blockquote>
+<p>
+ jbig2dec: Need to store local copy of error message.<br>
+<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-02 13:06: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=6728387b7f4b803ea5a26eb220ce24e4ff65e710">6728387b7f4b803ea5a26eb220ce24e4ff65e710</a>
+<blockquote>
+<p>
+ PDF interpreter - Fix incorrect CIDFontType2 with Type1C descendants<br>
+<br>
+ Customer bug report. The file contains a CIDFont declared like this:<br>
+<br>
+ 16 0 obj<br>
+ &lt;&lt;<br>
+ ...<br>
+ /Subtype /CIDFontType2<br>
+ ...<br>
+ &gt;&gt;<br>
+<br>
+ The /Subtype /CIDFontType2 means that the font is a CIDFont with<br>
+ TrueType outlines. However the actual font:<br>
+<br>
+ 10 0 obj<br>
+ &lt;&lt;<br>
+ /Subtype /Type1C<br>
+ /Length 49432<br>
+ /Length1 49432<br>
+ &gt;&gt;<br>
+<br>
+ is a Type1C (Compact Font Format) font. The PDF file is, quite simply,<br>
+ incorrect. The Subtype should be /CIDFontType0. Interestingly we already<br>
+ have code in the CIDFontType2 case to handle an incorrect value of<br>
+ Subtype being set to /CIDFontType0 so this is the reverse case.<br>
+<br>
+ If we discover we are reading a Type1C font, and the parent is a CIDFont<br>
+ with a Subtype of CIDFontType2, then change the parent dictionary to<br>
+ have a Subtype of /CIDFOntType0C and read the font as a CIDFont.<br>
+<br>
+Resource/Init/pdf_font.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-01 19:48: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=1c363593d7880b305e5da0cae8964bf090af3e61">1c363593d7880b305e5da0cae8964bf090af3e61</a>
+<blockquote>
+<p>
+ Speed up gx_get_bits_std_to_native.<br>
+<br>
+ We don't need to fetch the color_mapping_procs for every pixel;<br>
+ just once will do.<br>
+<br>
+base/gdevdgbr.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-04-01 14:27:33 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=85225cda5e2b2d557942c6ff13887e418eccb6cc">85225cda5e2b2d557942c6ff13887e418eccb6cc</a>
+<blockquote>
+<p>
+ Remove pgs-&gt;alpha<br>
+<br>
+ The alpha value in the graphic state is not used and will<br>
+ only lead to confusion for people working on transparency.<br>
+<br>
+base/gdevp14.c<br>
+base/gsalpha.c<br>
+base/gsalpha.h<br>
+base/gsstate.c<br>
+base/gxclpath.c<br>
+base/gxcmap.c<br>
+base/gxgstate.h<br>
+base/lib.mak<br>
+windows/ghostscript.vcxproj<br>
+windows/ghostscript.vcxproj.filters<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-31 15:17:40 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=295bcef3b977c12885e30fdbae326f63d0771caa">295bcef3b977c12885e30fdbae326f63d0771caa</a>
+<blockquote>
+<p>
+ Squash 'set but unused' warning in gdevcups.<br>
+<br>
+cups/gdevcups.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-31 14:59:04 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a32c6fdce5fab7d5918d02d30a4cf6696af58db3">a32c6fdce5fab7d5918d02d30a4cf6696af58db3</a>
+<blockquote>
+<p>
+ Squash some compiler warnings.<br>
+<br>
+base/gsicc_cache.c<br>
+base/gsptype1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-31 13:00:40 +0100
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4dd43e9ca448777bbd585ef3ce97e9cf593f395d">4dd43e9ca448777bbd585ef3ce97e9cf593f395d</a>
+<blockquote>
+<p>
+ Coverity 355259: Avoid &quot;Failure to restore&quot; warning from coverity.<br>
+<br>
+ Coverity complains that pgs-&gt;fillconstantalpha isn't restored<br>
+ before the file exits. While we're not too fussed about what<br>
+ happens to it in an error condition, simply hoisting a couple<br>
+ of lines up a bit solves the problem and should shut it up.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-30 19:01: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=32805b5689be664f9b76502669775baa53f55677">32805b5689be664f9b76502669775baa53f55677</a>
+<blockquote>
+<p>
+ Redefine deprecated .setopacityalpha and .setshapealpha<br>
+<br>
+ .setopacityalpha and .setshapealpha have been replaced with<br>
+ .setfillconstantalpha/.setstrokeconstantalpha and .setalphaisshape, operators<br>
+ which actually do what PDF requires.<br>
+<br>
+ As an interim measure, to allow users that rely on these operators some time<br>
+ to adjust, define versions of .setopacityalpha and .setshapealpha which<br>
+ approximate what the old implementations did.<br>
+<br>
+ As with the rest of the transparency operators they only exist when gs is<br>
+ given the -dALLOWPSTRANSPARENCY option. Also, they are in pdf_main.ps just so<br>
+ they grouped in proximity to where the rest of the ALLOWPSTRANSPARENCY logic is<br>
+ implemented.<br>
+<br>
+Resource/Init/pdf_main.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-30 09:59: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=3ff82b33f24ed54c2d3bb88ec31da7d2f9fd2765">3ff82b33f24ed54c2d3bb88ec31da7d2f9fd2765</a>
+<blockquote>
+<p>
+ Fail configure with unsupported shared tiff/jpeg combo<br>
+<br>
+ With the changes to support consuming the various TIFF input forms, we cannot<br>
+ support all combinations of mixing share and local libtiff and libjpeg.<br>
+<br>
+ For simplicity just reject mixing those configs.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-25 14:00:55 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6756b355c238c319fe66087dece15174e62f9f15">6756b355c238c319fe66087dece15174e62f9f15</a>
+<blockquote>
+<p>
+ Fix shared libtiff and libjpeg build<br>
+<br>
+ When building with shared libs, we should not try to include our custom libjpeg<br>
+ memory management context into the TIFF reader implementation context.<br>
+<br>
+gpdl/gpdl.mak<br>
+gpdl/tifftop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-30 14:47:25 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b8bda01581b94e9159533460cfe79436f4d5ac21">b8bda01581b94e9159533460cfe79436f4d5ac21</a>
+<blockquote>
+<p>
+ Coverity 94826 Add missing offset to buffer size used for clist cmd.<br>
+<br>
+base/gxclpath.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-29 15:32: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=b09cbe8e577fb14504932dc8d9096187ec4e0840">b09cbe8e577fb14504932dc8d9096187ec4e0840</a>
+<blockquote>
+<p>
+ Fix infinite loop in PDF interpreter 'pagespotcolors' procedure<br>
+<br>
+ The file tests_private/pdf/uploads/poc1_pdf_gs.pdf has the single page<br>
+ Parent object as itself. This only showed up with &quot;DeviceN&quot; devices that<br>
+ search the PDF for the number of spot colorants on the page.<br>
+<br>
+ Note that this file is broken in other respects since it has a /Count<br>
+ of 9 pages, but only a single page. This change also adds handling for<br>
+ the //null object returned when a page isn't found since there isn't<br>
+ actually a second page, and adds an error message when this is the case.<br>
+<br>
+Resource/Init/pdf_main.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-30 12:24:45 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4dde07159da5786570ad4f8d2b7b3c0b828802ab">4dde07159da5786570ad4f8d2b7b3c0b828802ab</a>
+<blockquote>
+<p>
+ Coverity 141130 Initialize shape and alpha of group for image.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-30 19:51: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=baa1a80f7824e26fb31f5f5f782980518b6cbfd9">baa1a80f7824e26fb31f5f5f782980518b6cbfd9</a>
+<blockquote>
+<p>
+ Coverity 355259: Fix precedence of assignment/comparison.<br>
+<br>
+ This was leading to code being thought of as being unreachable.<br>
+<br>
+base/gxstroke.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-30 10:45:25 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=22a31bda026deb8e3748f25bc2cf3b46263e689c">22a31bda026deb8e3748f25bc2cf3b46263e689c</a>
+<blockquote>
+<p>
+ Update doc to deprecate transparency PS methods<br>
+<br>
+doc/Language.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-27 13:54:02 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6a3c36f8c5e83448f5d1e5f24ee01c0e80a92877">6a3c36f8c5e83448f5d1e5f24ee01c0e80a92877</a>
+<blockquote>
+<p>
+ Fix Bug 702177: VMerrors with some BufferSpace and/or -K limits.<br>
+<br>
+ Interestingly, the two examples given in the bug succeed on Windows 64<br>
+ but don't on linux. The difference is due to an 8 byte difference in the<br>
+ size of gx_clist_state (the per band writer state). In the case of the<br>
+ Bug690546.pdf file, the space left in the BufferSpace area after the<br>
+ logic increased it was only 2,200 bytes on linux, but was 12k bytes on<br>
+ Windows (it made an extra pass through the automatic &quot;increase space&quot;<br>
+ loop in gdev_prn_setup_as_command_list. Fix the calculation in<br>
+ clist_init_states so that the amount of extra space corresponds to the<br>
+ amount expected by clist command writing (data_bits_size + cmd_largest_size)<br>
+ rather than the insufficient and arbitrary &quot;100&quot;.<br>
+<br>
+ Note that although the Bug692057.pdf returned VMerror from cmd_put_list_op, the<br>
+ 'fallback; method of gx_default_strip_tile_rectangle still produces the SAME<br>
+ raster from psdcmyk16 and does not change the performance or clist file size<br>
+ Robin's commit cbee0840 fixed this case.<br>
+<br>
+base/gxclist.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-27 14:46:05 -0700
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d12d2085b5bd08ca1e813d97f3f7f7e630e791a0">d12d2085b5bd08ca1e813d97f3f7f7e630e791a0</a>
+<blockquote>
+<p>
+ Squashed commit of the opacity_shape branch<br>
+<br>
+ This commit removes shape.alpha and opacity.alpha from the<br>
+ graphic state. This involved removal of methods in the<br>
+ postscript based PDF interpreter, changes in the pdf14 device,<br>
+ changes in pdfwrite, the XPS interpreter, and the PS<br>
+ transparency test file that is present in examples and on<br>
+ the cluster. The goal of this commit was to avoid<br>
+ confusion and conflicts between shape.alpha opacity.alpha and<br>
+ the stroke and fill alpha values (CA ca). This change<br>
+ resulted in progressions in the XPS file. There were changes<br>
+ in a couple PDF files that required some investigation. In<br>
+ particular, the change in the dashed lines of Bug694981.pdf. Robin<br>
+ and I looked at this. Robin determined it was due to<br>
+ differences in stroke_add and stroke_fill not giving identical results.<br>
+ In the end, the new output looks closer the what AR provides.<br>
+<br>
+Resource/Init/pdf_draw.ps<br>
+Resource/Init/pdf_main.ps<br>
+Resource/Init/pdf_ops.ps<br>
+base/gdevp14.c<br>
+base/gdevp14.h<br>
+base/gstparam.h<br>
+base/gstrans.c<br>
+base/gstrans.h<br>
+base/gxblend.c<br>
+base/gxclimag.c<br>
+base/gxclpath.c<br>
+base/gxclpath.h<br>
+base/gxclrast.c<br>
+base/gxgstate.h<br>
+devices/vector/gdevpdft.c<br>
+examples/transparency_example.ps<br>
+psi/ztrans.c<br>
+xps/xpscolor.c<br>
+xps/xpsgradient.c<br>
+xps/xpsimage.c<br>
+xps/xpsopacity.c<br>
+xps/xpspath.c<br>
+xps/xpstile.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-27 15:28: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=1241ea6848d254de9a9dbcb8c8edf10a59761d1d">1241ea6848d254de9a9dbcb8c8edf10a59761d1d</a>
+<blockquote>
+<p>
+ PDF interpreter - cope with Form XObjects leaving junk on the stack<br>
+<br>
+ No bug report, customer supplied file. The file has a Form XObject<br>
+ where the stream ends:<br>
+<br>
+ /Image20 Do Q<br>
+ EMC Tendstream<br>
+<br>
+ which is clearly invalid. This leaves a T lying around which gets<br>
+ converted to a name and remains on the stack. When we come to complete<br>
+ the form processing we expect that the stack will be clean, because it<br>
+ isn't we end up corrupting an internal variable, which causes the<br>
+ *next* Form XObject to fail.<br>
+<br>
+ We cope with this here by adding code to check the objects on the stack<br>
+ and remove them one by one until we get back to a dictionary which<br>
+ contains a name we expect to find (because we pushed it on entry to the<br>
+ procedure) or run out of stack objects in which case we will throw an<br>
+ error.<br>
+<br>
+Resource/Init/pdf_draw.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-26 19:50: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=f3e37d28f6a76cb7cfc2a291aeb98b8f1c6ba178">f3e37d28f6a76cb7cfc2a291aeb98b8f1c6ba178</a>
+<blockquote>
+<p>
+ Add murun to the list of products for clusterpush.pl<br>
+<br>
+toolbin/localcluster/clusterpush.pl<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-26 07:21:57 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3df1313a6ef334d9c6da2fcd78347fb5eb7a3859">3df1313a6ef334d9c6da2fcd78347fb5eb7a3859</a>
+<blockquote>
+<p>
+ Fix CID 355224. Non-zero return code not possible, but Coverity doesn't get it.<br>
+<br>
+base/gsptype1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-24 10:15: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=748b5c3c86779dc0cf4ccc144530cf37f692375e">748b5c3c86779dc0cf4ccc144530cf37f692375e</a>
+<blockquote>
+<p>
+ Rejig &quot;fast&quot; stroking of miter joins.<br>
+<br>
+ This spins out of Bug 702196, though it's not strictly speaking<br>
+ related. Bug 702196 deals with lines being incorrectly recognised<br>
+ as being &quot;thin&quot;. Thin lines aren't mitred. When we fix the<br>
+ erroneous classification of lines as thin, this causes more<br>
+ lines to be mitre joined than before. This in turn exposes<br>
+ the bug that we (partially) fix here.<br>
+<br>
+ gs -sDEVICE=pdfwrite -o out.pdf tests_private/ps/ps3cet/11-28.PS<br>
+<br>
+ gs -sDEVICE=png16m -o out%d.png -r300 -dMaxBitmap=2G out.pdf<br>
+<br>
+ Page 4 of the output shows strange mitre extrusions from the edge<br>
+ of paths.<br>
+<br>
+ Investigation shows the file is 'strokepath'ing the path (with<br>
+ mitre joins), and the stroking the resultant path (again with<br>
+ mitre joins). The initial 'strokepath' conversion includes little<br>
+ &quot;wedges&quot; of path internally to give the &quot;underjoin&quot; in the path.<br>
+ When restroked, due to the mitre join still being set, these<br>
+ wedges turn into spikes.<br>
+<br>
+ The fix, implemented here, is to revise the way we do mitre joins.<br>
+ For paths stroked using the &quot;fast&quot; code, with miter joins, we<br>
+ perform slightly more complicated calculations at each join. This<br>
+ allows us to do the joins by moving the existing points of the<br>
+ paths 'inline'. This removes the need for the 'wedges', and<br>
+ actually gives us a much cleaner path overall.<br>
+<br>
+ This *should* help with pathological scan conversion cases too,<br>
+ because it means we will have fewer 'sleepers' in the 'train<br>
+ tracks' when strokepath is used.<br>
+<br>
+ This may not kick in in all cases where we'd like it to, because<br>
+ for some files, we use 'traditional' stroking, and so don't<br>
+ execute this code. One way around this would be to change<br>
+ gs_strokepath to disable 'traditional' filling in the presence<br>
+ of mitre joins, but that produces strange effects, so we're<br>
+ leaving it for now.<br>
+<br>
+base/gxstroke.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-18 15:11:01 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9dc0eb31d79bf819c97420aaf2f6fc5cf3a52c10">9dc0eb31d79bf819c97420aaf2f6fc5cf3a52c10</a>
+<blockquote>
+<p>
+ Bug 702196: Fix incorrect detection of &quot;thin&quot; lines while stroking.<br>
+<br>
+ When stroking lines, we spot whether a line is 'thin' (i.e. the<br>
+ perpendicular width of the line is less than 1 pixel), and handle<br>
+ those cases specially by using custom 'thin line' routines. This<br>
+ gives more pleasing results than slavishly following the 'any part<br>
+ of a pixel' rule.<br>
+<br>
+ The current code makes this determination in 2 places. Firstly,<br>
+ we calculate 'always_thin', by scaling the perpendicular vector<br>
+ and seeing if all possible lines will be 'thin'. Secondly, in<br>
+ the case when we aren't 'always_thin', we calculate it for each<br>
+ line segment in turn by calling 'width_is_thin'.<br>
+<br>
+ Unfortunately, the threshold used for the simple early rejection<br>
+ test in 'width_is_thin' is wrong. Rather than checking against<br>
+ 0.5, we should be checking against sqrt(1/8). This causes lines<br>
+ near 45 degrees to be improperly treated as thin. This is a<br>
+ simple fix.<br>
+<br>
+ This gives lots of progressions - so many that you wonder how we<br>
+ never spotted this before.<br>
+<br>
+ Unfortunately, buried in these progressions, there are a few files<br>
+ which, while improved, are still imperfect.<br>
+<br>
+ In some files, that use 'non-uniform' scales, (such as<br>
+ (53 0 0 21 0 0 )) a stroke of constant width can 'pop' between<br>
+ thick and thin as we move around the path; a near vertical<br>
+ line segment may be thin, whereas a near horizontal line segment<br>
+ might be thick due to the difference in scale. This is visually<br>
+ jarring.<br>
+<br>
+ To fix this, therefore, we'd need to modify the width_is_thin<br>
+ testing in non-uniform cases, so that it gives us the same results<br>
+ all the way around. Doing this would be complex, and ultimately<br>
+ actually ends up equivalent to us just relying on &quot;always_thin&quot;<br>
+ (with the exception of strictly vertical and horizontal line<br>
+ segements). We therefore disable the non-orthogonal test in<br>
+ 'width_is_thin' entirely.<br>
+<br>
+base/gxstroke.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-24 16:49:13 -0700
+</strong>
+<br>ray &lt;Ray.Johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d49dbf133ac49d09d626bab08ee92835a50a646a">d49dbf133ac49d09d626bab08ee92835a50a646a</a>
+<blockquote>
+<p>
+ Fix bug 702182: VMerror due to leaks in pattern cache due to locking.<br>
+<br>
+ If the tile being loaded by the clist reader was already in the cache and<br>
+ was locked, the slot would be re-loaded (with the same tile) without freeing<br>
+ up the previously loaded tile. It would be nicer to be able to skip reading<br>
+ the tile in this case, but we need to consume the data from the clist sequence,<br>
+ so just unlock it so it can be freed, then re-load it (presumably setting the<br>
+ lock again).<br>
+<br>
+base/gsptype1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-24 18:09:16 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1258814b0532f06217cbfaffc5254c9645f69b42">1258814b0532f06217cbfaffc5254c9645f69b42</a>
+<blockquote>
+<p>
+ Don't delete copied libjpeg source files after use<br>
+<br>
+ For reasons I'm not totally convinced are still valid, we copy the libpeg source<br>
+ files into the build directory (normally 'obj') and compile them from there,<br>
+ then delete them.<br>
+<br>
+ This apparently causes problems with oss-fuzz coverage builds, and it also makes<br>
+ debugging a pain, because the source files don't exist where the debug info<br>
+ thinks they should.<br>
+<br>
+base/jpeg.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-24 15:22: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=0ec0004cb9366002dbd97f40c32d8da6d33c1904">0ec0004cb9366002dbd97f40c32d8da6d33c1904</a>
+<blockquote>
+<p>
+ Remove unused base/gsalphac.[ch]<br>
+<br>
+ This was the compositing device used for Display Postscript/NeXT specific<br>
+ alpha blending. Since we haven't supported DPS properly for many years, and<br>
+ officially dropped it completely a couple of years ago, and this compositing<br>
+ device has not been included in the build for several years....<br>
+<br>
+ ....just delete the files and remove references to them.<br>
+<br>
+base/gsalphac.c<br>
+base/gsalphac.h<br>
+doc/Develop.htm<br>
+windows/ghostscript.vcproj<br>
+windows/ghostscript.vcxproj<br>
+windows/ghostscript.vcxproj.filters<br>
+windows/ghostscript_rt.vcxproj<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-24 15:19: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=1c9bd8e0aa41e69c4bd46a6c553320d97af1ce7c">1c9bd8e0aa41e69c4bd46a6c553320d97af1ce7c</a>
+<blockquote>
+<p>
+ Disable PPC optimisations in libpng<br>
+<br>
+ Since we don't include the libpng source file with the PowerPC optimizations<br>
+ in our build, and it only applies to reading, which we don't rely on, just<br>
+ disable calling the optimizations.<br>
+<br>
+ Cures a linker error on PowerPCle platforms<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-23 15:27:37 -0700
+</strong>
+<br>ray &lt;Ray.Johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cca279886b3bbb4d3af5768880565c9f7b372c08">cca279886b3bbb4d3af5768880565c9f7b372c08</a>
+<blockquote>
+<p>
+ Fix Bug 702181: SEGV when BufferSpace is at or above -K alloc limit<br>
+<br>
+ The issue with this file is that one of the pages is done in page mode because<br>
+ it was so small, but the 'resize' call when doing page 2 was not checking the<br>
+ allocation request against the limit, so the malloc would succeed, but the very<br>
+ next (and all subsequent) allocations would fail. The gdev_prn_allocate would<br>
+ capture the ecode, but would still call the clist_enable_multi_thread_render<br>
+ resulting in the SEGV.<br>
+<br>
+ Add the check in the gs_heap_resize_object function, and make sure and leave<br>
+ the 'monitor' after failure, then don't call clist_enable_multi_thread if the<br>
+ resize failed.<br>
+<br>
+base/gdevprn.c<br>
+base/gsmalloc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-20 10:26:17 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=886347337de7e121e3e1ffa348aa74856c8290ed">886347337de7e121e3e1ffa348aa74856c8290ed</a>
+<blockquote>
+<p>
+ Bug 702190: Set CFLAGS and CFLAGSAUX separately in Makefile<br>
+<br>
+ Building with -DGS_NO_FILESYSTEM allows support for environment without a<br>
+ proper file system, by stubbing out the gp_ calls that would normally access<br>
+ the file system.<br>
+<br>
+ Obviously, for Ghostscript to function, that means it requires its resource<br>
+ and initialisation files to be built into the binary in the ROMFS.<br>
+<br>
+ A problem arises if you include the -DGS_NO_FILESYSTEM CFLAG when building the<br>
+ mkromfs utility, which creates the ROMFS, since denying it access to the file<br>
+ system results in an empty ROMFS. Previously, setting CFLAGS to include<br>
+ -DGS_NO_FILESYSTEM when calling configure resulted in that flag being applied to<br>
+ the main build, and the auxiliary tools build (including mkromfs), unless the<br>
+ build specified was a cross-compilation.<br>
+<br>
+ This splits the CFLAGS and CFLAGSAUX so they are set separately in the Makefile<br>
+ so configure can filter out unwanted flags from the auxtools flags.<br>
+<br>
+ Currently, the only one being filtered is -DGS_NO_FILESYSTEM<br>
+<br>
+Makefile.in<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-19 16:19: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=7710a398e132e13f9e0ff2f83188cbe7d2b59b1f">7710a398e132e13f9e0ff2f83188cbe7d2b59b1f</a>
+<blockquote>
+<p>
+ Bug 702115: use the offical method to detect gcc<br>
+<br>
+ In the early days of autoconf there was no defined way to check if the selected<br>
+ compiler was gcc (or compatible) or not. Projects used the autoconf internal<br>
+ shell variable ac_cv_prog_gcc to get that info.<br>
+<br>
+ autoconf introduced the GCC shell variable as the official way to know (a long<br>
+ time ago), and we never revised our configure.ac to reflect that.<br>
+<br>
+ This does so.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-19 16:12: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=66c2469c7d4543f32d6dc93edf1d649e809b8419">66c2469c7d4543f32d6dc93edf1d649e809b8419</a>
+<blockquote>
+<p>
+ Remove deprecated opvp/oprp devices from default build<br>
+<br>
+ They can currently be reinstated with --with-openprinting<br>
+<br>
+ That option does not appear in the --help output because we want people to have<br>
+ to ask us about it, so we know if people actually use opvp/oprp, and still<br>
+ need them.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-23 09:07: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=fedfb0e00755d9529d15751650864d304708f0e1">fedfb0e00755d9529d15751650864d304708f0e1</a>
+<blockquote>
+<p>
+ Remove analytics stuff.<br>
+<br>
+ Analytics and cookie stuff will be added at serve time by Apache.<br>
+<br>
+ See /etc/apache2/sites-available/ghostscript.com-le-ssl.conf for more info<br>
+<br>
+doc/API.htm<br>
+doc/C-style.htm<br>
+doc/Commprod.htm<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-21 18:08:43 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d98ab1f82e64e11db6478c4ff3e3bcffcc69836e">d98ab1f82e64e11db6478c4ff3e3bcffcc69836e</a>
+<blockquote>
+<p>
+ jbig2dec: Cast literal to avoid shifting outside of valid range.<br>
+<br>
+ Fixes Coverity CID 355175.<br>
+<br>
+jbig2dec/jbig2_arith_iaid.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-21 16:49:33 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1677b6c0d7b090ad7691e766d4809f9badeecd20">1677b6c0d7b090ad7691e766d4809f9badeecd20</a>
+<blockquote>
+<p>
+ jbig2dec: Record stream errors in separate struct field.<br>
+<br>
+ Previously the number of remaining bytes in a read word (&gt;= 0) and the error<br>
+ state (&lt; 0) was stored in the same int field. Fixing signedness conversion<br>
+ warnings changed the type of the field to an unsigned field. The error state<br>
+ should have been stored separately at that time but it was overlooked. In this<br>
+ commit the error state is separated out into its own field.<br>
+<br>
+ Fixes Coverity CID 355176.<br>
+<br>
+jbig2dec/jbig2_arith.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-21 15:59:21 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a80f7f12e7a2fb0caa1ea9ac6fa8981cc539a1bc">a80f7f12e7a2fb0caa1ea9ac6fa8981cc539a1bc</a>
+<blockquote>
+<p>
+ jbig2dec: Use correct define for maxium value of type.<br>
+<br>
+ Fixes Coverity CID 355177.<br>
+<br>
+jbig2dec/jbig2_page.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-21 16:20:28 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f0c17451afb66e6fcf3bd453490b4b9d2b06b42">4f0c17451afb66e6fcf3bd453490b4b9d2b06b42</a>
+<blockquote>
+<p>
+ jbig2dec: Fix two overlooked warnings.<br>
+<br>
+ While working to fix all warnings seen when -Wsign-conversion is<br>
+ enabled, these two warnings were accidentally introduced by commit<br>
+ ff53af0d4ff9291aa5039522f5553a2850dd569d and not noticed in the<br>
+ avalanche of warnings emitted due to -Wsign-conversion. This commit<br>
+ changes the indicies to the type of the limit variable, fixing the<br>
+ warnings.<br>
+<br>
+jbig2dec/jbig2_page.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-21 10:00: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=a45d7217c8c1578475ee9204d1f4ad46520f44d1">a45d7217c8c1578475ee9204d1f4ad46520f44d1</a>
+<blockquote>
+<p>
+ PDF interpreter - swallow errors reading ICC profiles and continue<br>
+<br>
+ Bug #702240 &quot;Invalid ICC profile aborts PDF ineterpretation&quot;<br>
+<br>
+ The file contains an ICCbased space which references an embedded ICC<br>
+ profile, which is Flate compressed. The compressed stream has been<br>
+ corrupted and cannot be decompressed.<br>
+<br>
+ This causes the colour space code to throw an ioerror and terminate<br>
+ interpretation, Acrobat (as usual) doesn't even give a warning.<br>
+<br>
+ This commit checks for an error creating the ReusableStreamDecode and<br>
+ if it fails sets the Data Source in the stream dictionary to null. We<br>
+ will later use the /N value in the stream dictionary to set a reasonable<br>
+ fallback space (in this case CMYK).<br>
+<br>
+Resource/Init/pdf_draw.ps<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-12 02:54:08 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9b2fc96b3ffc1c9d3d39b3d0ce27bf8abba7b8cf">9b2fc96b3ffc1c9d3d39b3d0ce27bf8abba7b8cf</a>
+<blockquote>
+<p>
+ jbig2dec: Fix signedness conversions.<br>
+<br>
+jbig2dec/jbig2.c<br>
+jbig2dec/jbig2_arith.c<br>
+jbig2dec/jbig2_arith_iaid.c<br>
+jbig2dec/jbig2_huffman.c<br>
+jbig2dec/jbig2_priv.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-12 00:27:13 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f2613ed2159e8efc6b5b593e668a00d8bea9ace8">f2613ed2159e8efc6b5b593e668a00d8bea9ace8</a>
+<blockquote>
+<p>
+ jbig2dec: Use uint32_t when counting segments.<br>
+<br>
+jbig2dec/jbig2.c<br>
+jbig2dec/jbig2_priv.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-12 00:26:59 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ff53af0d4ff9291aa5039522f5553a2850dd569d">ff53af0d4ff9291aa5039522f5553a2850dd569d</a>
+<blockquote>
+<p>
+ jbig2dec: Always use uint32_t when counting pages.<br>
+<br>
+jbig2dec/jbig2.c<br>
+jbig2dec/jbig2_page.c<br>
+jbig2dec/jbig2_priv.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-11 20:56:06 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6073e803bd652cd8fdb17f6be6beea05a13fd4f0">6073e803bd652cd8fdb17f6be6beea05a13fd4f0</a>
+<blockquote>
+<p>
+ jbig2dec: Handle errors from reading jbig2 streams.<br>
+<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-11 20:55:51 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1e9b5185c889266c9a3d6f25c9df558d41335d46">1e9b5185c889266c9a3d6f25c9df558d41335d46</a>
+<blockquote>
+<p>
+ jbig2dec: Use size_t for string length.<br>
+<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-11 18:42:26 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dc3f780ee3c9e43f34ba1c0b1101b41c58b40710">dc3f780ee3c9e43f34ba1c0b1101b41c58b40710</a>
+<blockquote>
+<p>
+ jbig2dec: Avoid formatting error messages twice in error callback.<br>
+<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-11 16:35:53 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9b5008aa2bc1c6a6acb2c6f90d1ef8d6bad9e66a">9b5008aa2bc1c6a6acb2c6f90d1ef8d6bad9e66a</a>
+<blockquote>
+<p>
+ jbig2dec: Pass segment numbers as unsigned values to error callback.<br>
+<br>
+ According to the JBIG2 specification segments numbers are 32 bit unsigned<br>
+ integer. Previously any segment numbers larger than INT32_MAX would be passed<br>
+ as negative numbers.<br>
+<br>
+ Some parts of the decoder do not yet know, or do not have access to the<br>
+ currently decoded segment number, and this needs to be specially indicated.<br>
+ Therefore jbig2dec appropriates the unlikely segment number 0xffffffff to<br>
+ indicate an unknown segment number.<br>
+<br>
+ This is a change of the public API.<br>
+<br>
+base/sjbig2.c<br>
+gpdl/jbig2top.c<br>
+jbig2dec/jbig2.c<br>
+jbig2dec/jbig2.h<br>
+jbig2dec/jbig2_arith.c<br>
+jbig2dec/jbig2_arith_iaid.c<br>
+jbig2dec/jbig2_arith_int.c<br>
+jbig2dec/jbig2_halftone.c<br>
+jbig2dec/jbig2_huffman.c<br>
+jbig2dec/jbig2_image.c<br>
+jbig2dec/jbig2_mmr.c<br>
+jbig2dec/jbig2_page.c<br>
+jbig2dec/jbig2_priv.h<br>
+jbig2dec/jbig2_refinement.c<br>
+jbig2dec/jbig2_segment.c<br>
+jbig2dec/jbig2_symbol_dict.c<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-10-17 01:48:00 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ea9b3a676a516a603fabb593085d14a67356db6f">ea9b3a676a516a603fabb593085d14a67356db6f</a>
+<blockquote>
+<p>
+ Bug 701721: jbig2dec: Fix under/overflow handling in arithmetic integer decoder.<br>
+<br>
+ The previous detection logic caused GCC's -Wlogical-op to trip.<br>
+ Not only that, but the detection logic never took into account<br>
+ that underflow is not possible (the worst case is V == INT32_MIN,<br>
+ but offset is always &gt; 0, so underflow cannot happen), nor take<br>
+ varying offset values into account (hardcoded limits meant that<br>
+ the offset was ignored even if it could not cause an overflow),<br>
+ but instead could cause non-clamped values to be emitted.<br>
+<br>
+ This corrected logic adheres to the Annex A. Table A.1 in the specification.<br>
+<br>
+jbig2dec/jbig2_arith_int.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-10-01 18:08:34 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=92faea67b31570e84b978a77b43c8f38bdad7bd4">92faea67b31570e84b978a77b43c8f38bdad7bd4</a>
+<blockquote>
+<p>
+ jbig2dec: Avoid warning by copying bytes instead of characters.<br>
+<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-29 17:10:00 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f20fc43d80e31780935be96393800cc1fac8ac50">f20fc43d80e31780935be96393800cc1fac8ac50</a>
+<blockquote>
+<p>
+ jbig2dec: Enable warnings for signedness in comparisons.<br>
+<br>
+jbig2dec/configure.ac.in<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-29 12:09:40 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5947fb2f1c022982e82406639517ebacae8d5cf6">5947fb2f1c022982e82406639517ebacae8d5cf6</a>
+<blockquote>
+<p>
+ jbig2dec: Address all signedness comparison issues.<br>
+<br>
+jbig2dec/jbig2_arith.c<br>
+jbig2dec/jbig2_arith_iaid.c<br>
+jbig2dec/jbig2_arith_iaid.h<br>
+jbig2dec/jbig2_halftone.c<br>
+jbig2dec/jbig2_halftone.h<br>
+jbig2dec/jbig2_huffman.c<br>
+jbig2dec/jbig2_symbol_dict.c<br>
+jbig2dec/jbig2_text.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-29 12:09:22 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9394be6a45aea026f61900e1cb661a30db192c15">9394be6a45aea026f61900e1cb661a30db192c15</a>
+<blockquote>
+<p>
+ jbig2dec: Remove trailing whitespace.<br>
+<br>
+jbig2dec/CHANGES<br>
+jbig2dec/autogen.sh<br>
+jbig2dec/configure.ac.in<br>
+jbig2dec/msvc.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-29 16:26:53 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1899ce3f1844cf941d19c38fc8de8f126bf7419d">1899ce3f1844cf941d19c38fc8de8f126bf7419d</a>
+<blockquote>
+<p>
+ jbig2dec: Avoid passing NULL buffer to snprintf().<br>
+<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 17:07:27 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4239ceeb4dd39e2ac183a01877b62761ae13bae4">4239ceeb4dd39e2ac183a01877b62761ae13bae4</a>
+<blockquote>
+<p>
+ jbig2dec: Avoid artificially limiting jbig2dec.<br>
+<br>
+ Commit 7366747076f3b75def52079bd4d5021539a16394 fixes bug 694949 by<br>
+ adding an artificial limit (that does not come from the JBIG2<br>
+ specification) to the sizes of generic regions compared with the image<br>
+ they will be composed onto. A problem with such artificial limits is<br>
+ that they are arbitrary. This is exemplified by the changes in<br>
+ 0d21a58ab12b9584faa54baa48ce0dab350af53e to make jbig2dec not error<br>
+ out on commonly occurring images. It is impossible to know whether<br>
+ this updated limit is enough, or whether an even large generic region<br>
+ in a JBIG2 image will be found in the future.<br>
+<br>
+ Instead of imposing these kinds of limits, jbig2dec should attempt to<br>
+ decode any JBIG2 image given to it. If the user wants to limit the<br>
+ amount of memory jbig2dec may use for decoding any JBIG2 image, this<br>
+ is a better way of implicitly limiting image sizes.<br>
+<br>
+jbig2dec/configure.ac.in<br>
+jbig2dec/jbig2_generic.c<br>
+jbig2dec/snprintf.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 19:01:05 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cd1ef5475a3bda7a97851abc679c75e2ee64dec3">cd1ef5475a3bda7a97851abc679c75e2ee64dec3</a>
+<blockquote>
+<p>
+ Bug 702165: jbig2dec: Treat end of stream as fatal error, and remember errors.<br>
+<br>
+ * Treat reading beyond end of stream in arithmetic decoder as a fatal error.<br>
+<br>
+ * Remember previously encountered stream errors in arithmetic decoder.<br>
+<br>
+ * Ignore trailing bytes after terminating marker code in stream.<br>
+<br>
+jbig2dec/jbig2_arith.c<br>
+jbig2dec/jbig2_huffman.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 18:12:31 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=30842ee99923fa10a7301494fd08b998e7acf57b">30842ee99923fa10a7301494fd08b998e7acf57b</a>
+<blockquote>
+<p>
+ jbig2dec: Add overflow detection for IAID context size.<br>
+<br>
+jbig2dec/jbig2_arith_iaid.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 17:58:40 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=17e84cb1a4903fab26b5fc5d2e4805a1097f5a33">17e84cb1a4903fab26b5fc5d2e4805a1097f5a33</a>
+<blockquote>
+<p>
+ jbig2dec: Let arithmetic decoder and the underlying stream report errors.<br>
+<br>
+ When a called function indicates an error, the caller should print warnings.<br>
+ Since the arithmetic decoder now uses the normal way of reporting errors,<br>
+ the callers of the decoder are changed to report warnings.<br>
+<br>
+jbig2dec/jbig2.c<br>
+jbig2dec/jbig2_arith.c<br>
+jbig2dec/jbig2_arith.h<br>
+jbig2dec/jbig2_arith_iaid.c<br>
+jbig2dec/jbig2_arith_int.c<br>
+jbig2dec/jbig2_generic.c<br>
+jbig2dec/jbig2_huffman.c<br>
+jbig2dec/jbig2_priv.h<br>
+jbig2dec/jbig2_refinement.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 17:31:48 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=716560bf5f2bc4b821ca6924ec648ca4949826bb">716560bf5f2bc4b821ca6924ec648ca4949826bb</a>
+<blockquote>
+<p>
+ jbig2dec: Handle under-/overflow detection and messaging better.<br>
+<br>
+ Previously SYMWIDTH was capped too early in order to prevent underflow<br>
+ Moreover TOTWIDTH was allowed to overflow.<br>
+<br>
+ Now the value DW is checked compared to SYMWIDTH, preventing over<br>
+ underflow and overflow at the correct limits, and an overflow<br>
+ check has been added for TOTWIDTH.<br>
+<br>
+jbig2dec/jbig2_symbol_dict.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-16 22:56:06 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cf43daf9f8381a9accf36d12bad2324d021ec8c6">cf43daf9f8381a9accf36d12bad2324d021ec8c6</a>
+<blockquote>
+<p>
+ jbig2dec: Use unsigned suffix when defining UINT32_MAX.<br>
+<br>
+ Also move UINT32_MAX/INT32_MAX to internal header so they are defined<br>
+ (the same) in every jbig2 source code file.<br>
+<br>
+jbig2dec/jbig2_arith_int.c<br>
+jbig2dec/jbig2_generic.c<br>
+jbig2dec/jbig2_image.c<br>
+jbig2dec/jbig2_mmr.c<br>
+jbig2dec/jbig2_page.c<br>
+jbig2dec/jbig2_priv.h<br>
+jbig2dec/jbig2_segment.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 17:19:12 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a47257407ee8938051f14da81890869a5ade0c26">a47257407ee8938051f14da81890869a5ade0c26</a>
+<blockquote>
+<p>
+ jbig2dec: Keep type of index and array length the same.<br>
+<br>
+jbig2dec/jbig2_symbol_dict.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 16:57:23 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b610aebdd36d939a878e336c255c734b4432e023">b610aebdd36d939a878e336c255c734b4432e023</a>
+<blockquote>
+<p>
+ jbig2dec: Add more references to specification.<br>
+<br>
+jbig2dec/jbig2_arith.c<br>
+jbig2dec/jbig2_arith_iaid.c<br>
+jbig2dec/jbig2_symbol_dict.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 15:52:26 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d4dc797e4a65871134f6a244cb8421a33fe91360">d4dc797e4a65871134f6a244cb8421a33fe91360</a>
+<blockquote>
+<p>
+ jbig2dec: Add command line option to limit memory usage.<br>
+<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 15:52:06 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a64ec1a232aa675e75d71da2632c6fca9a7fddcf">a64ec1a232aa675e75d71da2632c6fca9a7fddcf</a>
+<blockquote>
+<p>
+ jbig2dec: Mention all long options in usage and manpage.<br>
+<br>
+jbig2dec/jbig2dec.1<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2019-09-15 15:45:47 +0200
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3f01ab3739773db83040d8c2a7c3562b9103ed4e">3f01ab3739773db83040d8c2a7c3562b9103ed4e</a>
+<blockquote>
+<p>
+ jbig2dec: Separate command line tool error callback state from parameters.<br>
+<br>
+jbig2dec/jbig2dec.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-05 03:31:43 +0800
+</strong>
+<br>Sebastian Rasmussen &lt;sebras@gmail.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e4dd74c63031c705b3b6938fdac6b69e6317f00a">e4dd74c63031c705b3b6938fdac6b69e6317f00a</a>
+<blockquote>
+<p>
+ Propagate errors when closing pipe.<br>
+<br>
+base/gdevpipe.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-17 15:52: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=97ad9c044a1d3f87b16b2be754e088e49cc1f398">97ad9c044a1d3f87b16b2be754e088e49cc1f398</a>
+<blockquote>
+<p>
+ Bring master up to date 9.52 release branch<br>
+<br>
+ Add references to the 64 bit windows exes<br>
+<br>
+ Release notes for 9.52 release<br>
+<br>
+ Version, dates etc for 9.52 release<br>
+<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/gs-vms.hlp<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+man/dvipdf.1<br>
+man/gs.1<br>
+man/gslp.1<br>
+man/gsnd.1<br>
+man/pdf2dsc.1<br>
+man/pdf2ps.1<br>
+man/pf2afm.1<br>
+man/pfbtopfa.1<br>
+man/printafm.1<br>
+man/ps2ascii.1<br>
+man/ps2epsi.1<br>
+man/ps2pdf.1<br>
+man/ps2pdfwr.1<br>
+man/ps2ps.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-19 08:12:38 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c126cabcc5760aec6458b97729c78c821e24d122">c126cabcc5760aec6458b97729c78c821e24d122</a>
+<blockquote>
+<p>
+ Bump version prior to 9.52 release<br>
+<br>
+Resource/Init/gs_init.ps<br>
+base/version.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-18 10:40: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=7ba3000d394406331c8e49c87e1d6494887c4e98">7ba3000d394406331c8e49c87e1d6494887c4e98</a>
+<blockquote>
+<p>
+ CID: 355082. Fix comparison of size_t &lt; 0.<br>
+<br>
+ Now we're using param_read_size_t, we no longer need to check<br>
+ for the returned value being &lt; 0. This check is pickled into<br>
+ the coertion code contained within that function.<br>
+<br>
+base/gsdparam.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-17 00:44: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=4cbc36fe4546bce70537bc65541f65b4d7259a5b">4cbc36fe4546bce70537bc65541f65b4d7259a5b</a>
+<blockquote>
+<p>
+ Bug 702151: Avoid truncating pointers in debug code.<br>
+<br>
+ Introduce a PRI_INTPTR and use that to consistently display<br>
+ pointers. We avoid using %p, as that displays inconsistently<br>
+ between platforms. Sometimes it does 0x%x, sometimes just %x.<br>
+<br>
+base/gdevdrop.c<br>
+base/gdevnfwd.c<br>
+base/gdevprn.c<br>
+base/gsalloc.c<br>
+base/gschar0.c<br>
+base/gscie.c<br>
+base/gsciemap.c<br>
+base/gscspace.c<br>
+base/gsfcmap1.c<br>
+base/gsfont.c<br>
+base/gsht.c<br>
+base/gsicc_cache.c<br>
+base/gsicc_manage.c<br>
+base/gsicc_profilecache.c<br>
+base/gsimage.c<br>
+base/gsmalloc.c<br>
+base/gsmchunk.c<br>
+base/gsmemory.c<br>
+base/gsmisc.c<br>
+base/gsrefct.h<br>
+base/gsstate.c<br>
+base/gsstruct.h<br>
+base/gstrans.c<br>
+base/gstype1.c<br>
+base/gstype2.c<br>
+base/gxacpath.c<br>
+base/gxalloc.h<br>
+base/gxbcache.c<br>
+base/gxccache.c<br>
+base/gxccman.c<br>
+base/gxclist.c<br>
+base/gxclmem.c<br>
+base/gxclread.c<br>
+base/gxclthrd.c<br>
+base/gxclutil.c<br>
+base/gxcpath.c<br>
+base/gxcpath.h<br>
+base/gxfill.c<br>
+base/gxfillsl.h<br>
+base/gxht.c<br>
+base/gxpath.c<br>
+base/gxpcmap.c<br>
+base/scfd.c<br>
+base/scfe.c<br>
+base/sfxfd.c<br>
+base/sfxstdio.c<br>
+base/stdint_.h<br>
+base/stream.c<br>
+base/szlibc.c<br>
+devices/gdevfax.c<br>
+devices/gdevx.c<br>
+psi/ialloc.c<br>
+psi/idebug.c<br>
+psi/idict.c<br>
+psi/idicttpl.h<br>
+psi/idstack.c<br>
+psi/igc.c<br>
+psi/igcref.c<br>
+psi/igcstr.c<br>
+psi/iinit.c<br>
+psi/ilocate.c<br>
+psi/imain.c<br>
+psi/imainarg.c<br>
+psi/iname.c<br>
+psi/interp.c<br>
+psi/isave.c<br>
+psi/iutil.c<br>
+psi/zcie.c<br>
+psi/zcontrol.c<br>
+psi/zvmem.c<br>
+xps/xpshash.c<br>
+xps/xpsresource.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-12 17:22:36 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d7961033ee224fc5d2c96a16bea3f3399dd29561">d7961033ee224fc5d2c96a16bea3f3399dd29561</a>
+<blockquote>
+<p>
+ Add support for 64bit and size_t paramaters.<br>
+<br>
+ Cope with both int64_t's and size_t's with appropriate<br>
+ rangechecks when casting will cause problems.<br>
+<br>
+ -d values on the command line are read as int64_t's.<br>
+<br>
+ If we ever find outselves wanting to assign a size_t where<br>
+ the 63rd bit matters, then we may have to rethink this :)<br>
+<br>
+ We also change various params (such as MaxBitmap, MaxPatternBitmap<br>
+ etc) to be size_t's. This affects the device structure itself.<br>
+<br>
+base/gsdparam.c<br>
+base/gslib.c<br>
+base/gsparam.c<br>
+base/gsparam.h<br>
+base/gsparam2.c<br>
+base/gsparams.c<br>
+base/gxdevcli.h<br>
+base/gxpcache.h<br>
+base/gxpcmap.c<br>
+base/gxpcolor.h<br>
+base/spprint.c<br>
+base/spprint.h<br>
+base/spsdf.c<br>
+devices/vector/gdevpsdp.c<br>
+pcl/pl/plmain.c<br>
+psi/imainarg.c<br>
+psi/iparam.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-15 14:48:29 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e1b322c8ca8f08b5af398a912c511dc041cd9c86">e1b322c8ca8f08b5af398a912c511dc041cd9c86</a>
+<blockquote>
+<p>
+ Fix bug 702142: SMask profile 'swap' could cause clist to use wrong profile<br>
+<br>
+ The SMask 'swap' of profiles for the 'default' colorspaces in the icc_manager<br>
+ was not being detected by the clist logic since the colorspace id was still<br>
+ set to the cs_Device*_id value (1, 3, or 4).<br>
+<br>
+ The fix is to have the clist writing check for unknown color_space check BOTH<br>
+ the color_space.id and the color_space.space, and flag 'unknown' if either<br>
+ differed. The color_space.space includes the icc_profile info.<br>
+<br>
+ This results in a few progressions as well as fixing the file of this bug.<br>
+<br>
+base/gxclimag.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-14 15:07: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=0fad2491ae5d9dae39807266b6f0f2584a02bdd8">0fad2491ae5d9dae39807266b6f0f2584a02bdd8</a>
+<blockquote>
+<p>
+ Bug 702217: Reinstate dynamic libs LDFLAGS for MacOS<br>
+<br>
+ With the significant revamp of the platform detection functions in configure<br>
+ the LDFLAGS for building the gs shared library on MacOS went astray. This<br>
+ puts them back in.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-16 09:06:16 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=aaf5edb15fceaae962569bae30eb4633480c1d15">aaf5edb15fceaae962569bae30eb4633480c1d15</a>
+<blockquote>
+<p>
+ Repair device subclassing after fill+stroke commit<br>
+<br>
+ Bug 702221 &quot;Ghostscript 9.51 - SIGFPE when -dFirstPage or -dLastPage is set&quot;<br>
+<br>
+ The fill+stroke commit had an error with the default method for handling<br>
+ fill_stroke_path which passed the subclassing device as a parameter to<br>
+ the child, instead of passing the child device. This caused seg faults,<br>
+ floating point exceptions, hangs, and possibly other problems.<br>
+<br>
+ In addition the object filtering device had been modified to pass the<br>
+ fill+stroke method to the default handler, instead of checking to see<br>
+ if vector operations should be dropped.<br>
+<br>
+ This commit fixes both problems.<br>
+<br>
+base/gdevoflt.c<br>
+base/gdevsclass.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-14 10:56: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=b5682afdd022f0c1f1a20f83568300655bc27bfe">b5682afdd022f0c1f1a20f83568300655bc27bfe</a>
+<blockquote>
+<p>
+ Add ARCH_MAX_SIZE_T to configure's arch.h prototype<br>
+<br>
+arch/arch_autoconf.h.in<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-14 10:53: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=09d359ca87e47cac31c7f1466250b3299818ce86">09d359ca87e47cac31c7f1466250b3299818ce86</a>
+<blockquote>
+<p>
+ Don't fail on missing freetype for auxtools run<br>
+<br>
+ When cross compiling, we shouldn't fail the recursive call to configure if<br>
+ there's no freetype - since it's not required for auxtools.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-13 18:57:30 -0700
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=bba815fd5ab0427b96ad2f2d6d96e7d69b4964ad">bba815fd5ab0427b96ad2f2d6d96e7d69b4964ad</a>
+<blockquote>
+<p>
+ Bug 702191. Change Tr modes 2 and 6 to use fill_stroke operation.<br>
+<br>
+ Thanks to Ken Sharp who made the change to the PDF interpreter pdf_ops.ps.<br>
+ This showed a few files that had SEGV. This was due to both the fill and<br>
+ stroke having pattern colors where the pattern bits did not fit in the cache.<br>
+ The stroke color could eject the fill pattern from the cache. The fix is to<br>
+ lock the fill pattern in the cache as well as the stroke pattern (and unlock<br>
+ it as well after the fill_stroke).<br>
+<br>
+Resource/Init/pdf_ops.ps<br>
+base/gspaint.c<br>
+psi/dwmainc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-13 13:01: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=3353e8f68c8b4b13db8f712e3d01503d9043df65">3353e8f68c8b4b13db8f712e3d01503d9043df65</a>
+<blockquote>
+<p>
+ pdfwrite - fix previous commit<br>
+<br>
+ commit 2a691356aeb538388ecbf0cafdf422bde771bad0 accidentally left a<br>
+ debugging hack in place, which would lead to lots of files including<br>
+ a ToUnicode CMap when that wasn't necessary, fix it here.<br>
+<br>
+devices/vector/gdevpdtw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-13 11:10: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=2a691356aeb538388ecbf0cafdf422bde771bad0">2a691356aeb538388ecbf0cafdf422bde771bad0</a>
+<blockquote>
+<p>
+ pdfwrite - preserve ToUnicode CMaps with non-standard mappings<br>
+<br>
+ Bug #702201 &quot;pdfwrite changes ligature&quot;<br>
+<br>
+ The title is incorrect, pdfwrite does not 'change ligature'. The PDF<br>
+ file uses an ffi ligature glyph from the embedded font, but the<br>
+ ToUnicode CMap does not map that to U+FB03, it maps it to 3 Unicode<br>
+ code points; f, f and i.<br>
+<br>
+ When we emit a simple font we check its Encoding to see if it needs a<br>
+ ToUnicode CMap, if it doesn't then we don't emit one. Because all the<br>
+ glyphs in this font are named, and have standard names, we don't need to<br>
+ emit a ToUnicode CMap and so we don't (keeps the file size down).<br>
+<br>
+ However, that means that PDF consumers will map the ligature glyph to a<br>
+ ligature ffi when copy/pasting (it has no other effect).<br>
+<br>
+ Here we check the Unicode code points as they are added to the internal<br>
+ record. If any of them is not 2 bytes long, then its not a standard<br>
+ mapping (simple fonts can only map to a single point). In that case we<br>
+ note the exception and when we come to write the font, in the code that<br>
+ checks the Encoding to see if we need to write a ToUnicode, we check<br>
+ this value, if we've seen a multiple code point in the ToUnicode CMap<br>
+ then we don't elide it, we embed the one we picked up.<br>
+<br>
+ This is not actually a bug IMO, there's nothing wrong with the mapping<br>
+ as it stands because an ffi glyph in the document really should map to<br>
+ a single Unicode code point ffi ligature. However, the creator of the<br>
+ PDF file obviously didn't want that, so we;ll now honour it.<br>
+<br>
+ NB this only affects the emission of a ToUnicode CMap, which is only<br>
+ used for copy/paste/search. The PDF contents are not affected by this<br>
+ commit.<br>
+<br>
+devices/vector/gdevpdte.c<br>
+devices/vector/gdevpdtf.c<br>
+devices/vector/gdevpdtf.h<br>
+devices/vector/gdevpdtw.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-13 08:16:34 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=0bb921da9e702375618aa5fe7e85bf589e9a0108">0bb921da9e702375618aa5fe7e85bf589e9a0108</a>
+<blockquote>
+<p>
+ Tiny tweak to release notes<br>
+<br>
+ to say &quot;in the 9.50 release notes&quot; rather than &quot;above&quot;.<br>
+<br>
+doc/History9.htm<br>
+doc/News.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 11:37: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=6018c8989f1c670d0b8c44d79438faa68dbe5a06">6018c8989f1c670d0b8c44d79438faa68dbe5a06</a>
+<blockquote>
+<p>
+ Bring master up to date with 9.51 release branch<br>
+<br>
+ Dates etc for 9.51 RC1<br>
+<br>
+ Plus prelim changelog<br>
+<br>
+ Dates, changelog etc for 9.51rc2<br>
+<br>
+ Add mention of deprecating/removing opvp/oprp devices<br>
+<br>
+ Dates/logs for 9.51 release candidate 3<br>
+<br>
+ Dates, changelog etc for 9.51 release<br>
+<br>
+Makefile.in<br>
+base/version.mak<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/gs-vms.hlp<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+man/dvipdf.1<br>
+man/gs.1<br>
+man/gslp.1<br>
+man/gsnd.1<br>
+man/pdf2dsc.1<br>
+man/pdf2ps.1<br>
+man/pf2afm.1<br>
+man/pfbtopfa.1<br>
+man/printafm.1<br>
+man/ps2ascii.1<br>
+man/ps2epsi.1<br>
+man/ps2pdf.1<br>
+man/ps2pdfwr.1<br>
+man/ps2ps.1<br>
+psi/winint.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-12 17:46: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=e61555d8b960f1a87664fc378f4ce63619a762aa">e61555d8b960f1a87664fc378f4ce63619a762aa</a>
+<blockquote>
+<p>
+ Change 9.28 to 9.50 in the SAFER section<br>
+<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-11 15:48: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=b2d084d01a22261281fc35e990efc46dde6ea8f9">b2d084d01a22261281fc35e990efc46dde6ea8f9</a>
+<blockquote>
+<p>
+ Improve debugging error messages in fontconfig code.<br>
+<br>
+ Change the order we retrieve values, so we get FC_FILE (which *should* always<br>
+ succeed) first. Thus we can use that in subsequent DEBUG messages, giving<br>
+ slightly more useful diagnostics.<br>
+<br>
+base/gp_unix.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-11 13:18: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=09a575f0fdc6edde7e42f325167318a1b199839f">09a575f0fdc6edde7e42f325167318a1b199839f</a>
+<blockquote>
+<p>
+ (fontconfig) Don't stop enumerating fonts on error.<br>
+<br>
+ We only want to finish enumerating the fontconfig fonts list once the list<br>
+ is exhausted, not when an individual font gives an error.<br>
+<br>
+ In the event a font gives an error, skip it and move on.<br>
+<br>
+base/gp_unix.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-05 13:12: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=32fde6e59a76fa7bcc7c3b977a77b871a740f568">32fde6e59a76fa7bcc7c3b977a77b871a740f568</a>
+<blockquote>
+<p>
+ More problems with TTF &quot;notdef&quot; glyphs<br>
+<br>
+ The font in this file is questionable according to the spec. The spec says GID 0<br>
+ in a TTF *must* be the &quot;notdef&quot; glyph which, traditionally, is a hollow<br>
+ rectangle glyph. This contradicts what Postscript and PDF expect which is that<br>
+ the .notdef glyph will be non-marking.<br>
+<br>
+ The problem is many PDF embedded TTF fonts ignore this, and populate GID 0 with<br>
+ a &quot;meaningful&quot; glyph rather than an actual notdef.<br>
+<br>
+ Previously, the fonts that did this were all ones that used MS Unicode cmap<br>
+ tables and hence we used that to determine whether to image GID 0 or not in<br>
+ TTFs.<br>
+<br>
+ This file does not use a Unicode cmap, but rather an Apple cmap table. In this<br>
+ case, the cmap table maps every character code to GID 0, GID 0 being the only<br>
+ glyph defined in the font.<br>
+<br>
+ So, tweak the heuristic so that in the event we have what *looks* like a<br>
+ notdef, we'll look up the character code in the TTF cmap table, and if<br>
+ the cmap table maps that code to GID 0, then we'll image the glyph.<br>
+ Otherwise, we will force it to be non-marking.<br>
+<br>
+ (Bug 702167)<br>
+<br>
+Resource/Init/gs_ttf.ps<br>
+psi/zfapi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-09 07:08:00 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3f7832e4b9568e70bdf3bb32c877c4bf5e9dc3b4">3f7832e4b9568e70bdf3bb32c877c4bf5e9dc3b4</a>
+<blockquote>
+<p>
+ PS interpreter - another 64-bit integer fix<br>
+<br>
+ Bug #702197 &quot;Integer overflowin --for-- on Windows&quot;<br>
+<br>
+ Both the limit and the control variable were being passed to types<br>
+ which truncated values when long or int were not 64-bit types.<br>
+<br>
+psi/zcontrol.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-09 05:22: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=9a0c0303127e4dba3fdc244cf3d75684e5cc8358">9a0c0303127e4dba3fdc244cf3d75684e5cc8358</a>
+<blockquote>
+<p>
+ PS interpreter - fix cvrs with 64-bit integers<br>
+<br>
+ Bug #702195 &quot;Integer overflow in cvrs on Windows&quot;<br>
+<br>
+ Another 64-bit integer fix, we were casting the result of the radix<br>
+ calculation through a long which on Windows is not 64-bit (on Linux it<br>
+ is), leading to truncation o the result.<br>
+<br>
+ Fixed by casting through ps_uint instead. We also need to check for<br>
+ CPSI mode here as we must use a 32-bit intermediate integer if we are in<br>
+ CPSI mode and emit a rangecheck if the integer overflows 32 bits.<br>
+<br>
+psi/ztype.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-08 00:26:16 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=56840269a9df474a029f12ce8e4e41bb2abea313">56840269a9df474a029f12ce8e4e41bb2abea313</a>
+<blockquote>
+<p>
+ PS interpreter some 64-bit integer fixes<br>
+<br>
+ Bug #702194 &quot;cvi produces incorrect results&quot;<br>
+<br>
+ This was simply caused by a cast through long. However its not enough<br>
+ merely to change the cast, we must also check for running in CPSI mode<br>
+ and throw an error if the returned integer cannot be represented in a<br>
+ 32-bit word, for compatibility with test suites.<br>
+<br>
+ In addition (see bug #702134) when exp throws an undefinedresult error<br>
+ delay setting the stack variable until after we have tested the result,<br>
+ so that we do not end up returning a INF on the stack, as is done in<br>
+ other code paths which check for NaN and INF.<br>
+<br>
+ Thirdly; in div cater for the case of an integer divided by a real and<br>
+ check the result for NaN and INF (as the other cases do). This now<br>
+ properly throws an error and does not return NaN or INF on the stack.<br>
+<br>
+psi/zarith.c<br>
+psi/zmath.c<br>
+psi/ztype.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-05 09:58:47 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=933a09069dea35d570694e157013f272995ca5c4">933a09069dea35d570694e157013f272995ca5c4</a>
+<blockquote>
+<p>
+ Fix Raspbian build failure with mm_constant_zeros.<br>
+<br>
+ Moved 'static __m128i mm_constant_zeros' inside MM_SETUP macro definition, so<br>
+ it only appears if MM_SETUP() is actually used.<br>
+<br>
+base/gsroprun.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-03 16:56:59 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=417b80ba6b16de181b2eb2fe5ca2e04565228f5f">417b80ba6b16de181b2eb2fe5ca2e04565228f5f</a>
+<blockquote>
+<p>
+ Bug 702166: Image pattern phase mismatch when using clist<br>
+<br>
+ The gxclimag.c code, when it does 'cmd_put_drawing_color' was not updating<br>
+ the tile_phase. The Kanji text set the tile_phase to 100, but the begin_image<br>
+ was supposed to be 0,0 but the writer was not performing the set_tile_phase.<br>
+<br>
+base/gxclimag.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-04 17:42: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=2a3b9b17cc32401b45382c42e081733d4f6d1a62">2a3b9b17cc32401b45382c42e081733d4f6d1a62</a>
+<blockquote>
+<p>
+ Cups device: Windows: avoid using an uninitialised mutex.<br>
+<br>
+cups/libs/cups/globals.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-03 16:40: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=cbee08400ca895bb5f52de6cf8cb44ba59cc5fd8">cbee08400ca895bb5f52de6cf8cb44ba59cc5fd8</a>
+<blockquote>
+<p>
+ Bug 702177: Avoid SEGV on low memory in cmd_put_halftone.<br>
+<br>
+ Ensure that cmd_put_list_op cannot return NULL without<br>
+ setting an error code.<br>
+<br>
+base/gxclutil.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-03 11:53: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=e9dc0327b8458ed7c3f1ca07870c7e54dbef6aa4">e9dc0327b8458ed7c3f1ca07870c7e54dbef6aa4</a>
+<blockquote>
+<p>
+ Simplify change to clusterpush.pl for ifilters.<br>
+<br>
+ No need to keep filters and ifilters separately as we pass<br>
+ them through with &quot;filter=&quot; and &quot;ifilter=&quot; intact.<br>
+<br>
+toolbin/localcluster/clusterpush.pl<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-03 10:55: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=fa944725e4b3ca01e7a63608a2b5afc320d9a4d2">fa944725e4b3ca01e7a63608a2b5afc320d9a4d2</a>
+<blockquote>
+<p>
+ Add support to clusterpush.pl for ifilter.<br>
+<br>
+ Needs tweaks within the cluster too, so don't try using<br>
+ this immediately!<br>
+<br>
+toolbin/localcluster/clusterpush.pl<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-03 10:02:57 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ab41133a6852dbb3cecdfd19ccd4737f27d7be28">ab41133a6852dbb3cecdfd19ccd4737f27d7be28</a>
+<blockquote>
+<p>
+ Avoid potential Memento leak in gs_lib_ctx_set_icc_directory().<br>
+<br>
+ Return gs_error_VMerror after alloc failure, not -1. This doesn't fix a<br>
+ known memento squeeze test case, but returning -1 after alloc failure breaks<br>
+ gs_main_finit()'s cleanup and leaks blocks.<br>
+<br>
+base/gslibctx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-03 09:47:52 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a07bf9d0dee6c44865c25ed8c36cf68150301b39">a07bf9d0dee6c44865c25ed8c36cf68150301b39</a>
+<blockquote>
+<p>
+ Fixed Memento leak in gs_seticcdirectory().<br>
+<br>
+ Return gs_error_VMerror instead of -1, after alloc failure. This enables<br>
+ gs_main_finit() to clean up properly.<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=111090 ./ghostpdl/membin/gs -sDEVICE=bit -o /dev/null examples/text_graphic_image.pdf<br>
+<br>
+base/gsicc_manage.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-02 20:05:57 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=05ebf9f3c38ff9b15f54122c682f88ee9dd9d55e">05ebf9f3c38ff9b15f54122c682f88ee9dd9d55e</a>
+<blockquote>
+<p>
+ Avoid compiler warning for MM_SETUP() __m128i mm_constant_ones.<br>
+<br>
+ This avoids warning about mm_constant_ones being used uninitialised.<br>
+<br>
+ Generated code for release build is unchanged.<br>
+<br>
+base/gsroprun.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 17:12:23 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=612ca06e4a41db0f0023827c878a55423500237e">612ca06e4a41db0f0023827c878a55423500237e</a>
+<blockquote>
+<p>
+ minor fix to toolbin/squeeze2text.py to cope with no input.<br>
+<br>
+toolbin/squeeze2text.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-02 19:13: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=968216b16318407a179e7907dd5d6d2ebc54bb25">968216b16318407a179e7907dd5d6d2ebc54bb25</a>
+<blockquote>
+<p>
+ Fix typo in 16bit saturation blending code.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-02 17:10: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=2c5687fef9709b04dd96957677ff9accd16ee1f7">2c5687fef9709b04dd96957677ff9accd16ee1f7</a>
+<blockquote>
+<p>
+ Fix 16bit blending problem.<br>
+<br>
+ Seen with:<br>
+<br>
+ gs -sDEVICE=psdcmyk16 -o out%d.psd -r72 -dMaxBitmap=2000M<br>
+ tests_private/pdf/forms/v1.5/proxy_vol_1_number_1_1.pdf<br>
+<br>
+ on page 3.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-27 12:08: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=155894abeb41e90f9e2c8cb942269c2a2e1a6018">155894abeb41e90f9e2c8cb942269c2a2e1a6018</a>
+<blockquote>
+<p>
+ Reimplement saturation blendmode.<br>
+<br>
+ To test the results of deep color rendering, we ran a psdcmyk vs<br>
+ psdcmyk16 comparison. This showed differences on page 17 of the<br>
+ Altona_technical_v20_x4.pdf file in one patch. Simplifying the<br>
+ file showed that the saturation blend mode was showing a<br>
+ significant difference in one tile.<br>
+<br>
+ Saturation blend mode is defined to not make any changes if we<br>
+ are writing over a pure grey color (as there is no 'hue' for<br>
+ it to saturate). You'd expect that the blending function would be<br>
+ continuous (i.e. that a small peturbation of the background color<br>
+ should only produce a small peturbation in the output), but this<br>
+ is NOT the case around pure greys.<br>
+<br>
+ The example in the tested file, shows that psdcmyk is called with<br>
+ 7a, 7a, 7a, which therefore leaves the background unchanged. For<br>
+ psdcmyk16, it's called with 7a01 7a03 7a01, which therefore does<br>
+ NOT leave the background unchanged. Testing by changing the 8 bit<br>
+ inputs to 7b 7a 7b (a small peturbation), gives output of 99 64 99<br>
+ (a large change).<br>
+<br>
+ So, actually, the results given seem reasonable in that case.<br>
+<br>
+ HOWEVER, in investigating what now seems to be a red herring, I<br>
+ believe I've spotted a problem in the implementation. The scaling<br>
+ of the components subtracts y when it should be subtracting minb.<br>
+<br>
+ The only way I could actually work that out though, was to completely<br>
+ reimplement the code, and optimise it. I believe the new code is<br>
+ slightly clearer (in that it follows the spec more explicitly) and<br>
+ possibly slightly more performant, so I am committing that rather<br>
+ than attempting to patch the existing code.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-02 11:04:32 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=549a133dfcbdf2b3b028134d287d334f8fd623fd">549a133dfcbdf2b3b028134d287d334f8fd623fd</a>
+<blockquote>
+<p>
+ Fix 64bit non-console windows build.<br>
+<br>
+ The creation of the text window was truncating the pointer to<br>
+ long (32bit) size. No idea how we've been getting away with this<br>
+ in the past. I can only assume this has been exposed by<br>
+ differences in the runtime lib with vs2019 as compared to<br>
+ earlier versions.<br>
+<br>
+psi/dwtext.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-28 10:34:12 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1a4e859544336c9034c49bd9f735529401422961">1a4e859544336c9034c49bd9f735529401422961</a>
+<blockquote>
+<p>
+ Remove trailing white space from a prior commit<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 17:16: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=fa1bc6dce44b6fc69e9852553aec4b7a419d0d9c">fa1bc6dce44b6fc69e9852553aec4b7a419d0d9c</a>
+<blockquote>
+<p>
+ Bug 702155 Alternate tint transform and shadings<br>
+<br>
+ Add option to match AR shadings for corner case, which<br>
+ is not as detailed in the PDF specification.<br>
+<br>
+ If the source space is DeviceN or Separation and the<br>
+ colorants are not supported (i.e. if we are using the alternate tint<br>
+ transform) the interpolation should occur in the source space to<br>
+ accommodate non-linear tint transform functions.<br>
+ e.g. We had a case where the transform function<br>
+ was an increasing staircase. Including that function in the<br>
+ gradient smoothness calculation gave us severe quantization. AR on<br>
+ the other hand is doing the interpolation in device color space<br>
+ and has a smooth result for that case. So AR is not following the spec. The<br>
+ bit below solves the issues for Type 4 and Type 5 shadings as<br>
+ this will avoid interpolations in source space. Type 6 and Type 7 will still<br>
+ have interpolations in the source space even if pfs-&gt;cs_always_linear == true.<br>
+ So the approach below does not solve those issues. To do that<br>
+ without changing the shading code, we could make a linear<br>
+ approximation to the alternate tint transform, which would<br>
+ ensure smoothness like what AR provides.<br>
+<br>
+base/gxshade.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-27 07:46:32 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=55222ef42e6574967810f8591ea308dbfc81b0a4">55222ef42e6574967810f8591ea308dbfc81b0a4</a>
+<blockquote>
+<p>
+ Fix differences seen between page mode and clist mode exposed by commit b3a73575<br>
+<br>
+ The code in gxipixel.c skips gridfitting if fill_adjust is 0, but the clist<br>
+ writer logic wasn't updating the fill_adjust, so the reader could have the<br>
+ wrong value. Seen with fts_25_2505 and fts_25_2506 which have an image with<br>
+ SMask and also have large text (non-cached, so painted with fill) preceding<br>
+ (drawn under) the image. Text is drawn with fill_adjust 0.<br>
+<br>
+base/gxclimag.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 09:10:20 -0800
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8539dd741abec3d5b8e4417e512ae0847224f7a0">8539dd741abec3d5b8e4417e512ae0847224f7a0</a>
+<blockquote>
+<p>
+ Fixes needed for pdfi after fill/stroke -- check for null pattern<br>
+<br>
+ Change to test for pgs-&gt;colours.pattern.p_tile to be NULL before<br>
+ attempting to dereference it.<br>
+<br>
+ pdfi has a 'null' pattern frequently, which didn't seem to matter before the<br>
+ fill/stroke changes, but does matter now.<br>
+<br>
+ I think the gs/pdf implementation sets up a specific &quot;null&quot; pattern<br>
+ that gets around this issue, but currently pdfi does not do this.<br>
+ Maybe it should?<br>
+<br>
+base/gspaint.c<br>
+base/gxclrast.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 15:22: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=b6bd379a249b81213db5fdecf29ed11f2ce00e9e">b6bd379a249b81213db5fdecf29ed11f2ce00e9e</a>
+<blockquote>
+<p>
+ Fix signed issue in 16bit alpha blending fill_rectangle routines.<br>
+<br>
+ As seen by the central spot in the pink region of page 1 of:<br>
+<br>
+ gs -sDEVICE=psdcmyk16 -o out%d.psd -dMaxBitmap=2000M<br>
+ tests_private/pdf/pdf_1.7_ATS_EXXPA1DC_PDFACT.pdf<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 15:09: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=b942845ee596dbcf37cf2af2381f0b298b962317">b942845ee596dbcf37cf2af2381f0b298b962317</a>
+<blockquote>
+<p>
+ pdfwrite - Fix indeterminism with QL shading tests<br>
+<br>
+ When creating a new colour space to put in a PDF file we perform various<br>
+ tests to see if its a space we have already written, to prevent writing<br>
+ duplicate spaces (we perform similar tests for most resources).<br>
+<br>
+ In some cases, when we write the resource to a file, we create an MD5<br>
+ hash and compare those to see if the resources are the same. In the<br>
+ case of colour spaces, however, they are retained in memory and so we<br>
+ use a different method. We 'serialise' the colour space. This is not the<br>
+ same as writing it to the PDF file, and its a graphics library thing not<br>
+ a pdfwrite function. Basically this writes out the content of the<br>
+ various C structures. The stream we use is an in-memory stream.<br>
+<br>
+ Unfortunately, for Separation colour spaces, there was a fault in the<br>
+ function which writes the colour space name, and it was writing out<br>
+ the bytes forming the address of the name instead of the actual string.<br>
+<br>
+ This could, very rarely, mean that we would mis-identify a new colour<br>
+ space as being the same as an old colour space, and so would reuse the<br>
+ old space instead of creating a new one.<br>
+<br>
+ I've checked the DeviceN code and it does not suffer the same problem.<br>
+<br>
+base/gscsepr.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 13:03:56 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=988cfb770d12441dfef9002f799757e5cd869e48">988cfb770d12441dfef9002f799757e5cd869e48</a>
+<blockquote>
+<p>
+ Fix the overflow case in 16 bit saturation blending.<br>
+<br>
+ As seen with the second apple of the bottom row of page 1<br>
+ of:<br>
+<br>
+ gs -sDEVICE=psdcmyk16 -r72 -o out%d.psd -dMaxBitmap=2000M<br>
+ ../tests_private/pdf/PDF_1.7_ATS/AIX4G1C3.pdf<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 17:10:51 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=293e2b7f6298a6049254d18250d4f82f78ac2978">293e2b7f6298a6049254d18250d4f82f78ac2978</a>
+<blockquote>
+<p>
+ Fix for bug 702150: make pl_main_run_file_utf8() check for error from s_process_read_buf().<br>
+<br>
+ Avoids infinite loop in:<br>
+ ./membin/gpcl6 -sDEVICE=ppmraw -o /dev/null .<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 18:24:55 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=342229c7533310f9a46fbfd7a7dd2eaa976746f0">342229c7533310f9a46fbfd7a7dd2eaa976746f0</a>
+<blockquote>
+<p>
+ minor improvements to toolbin/squeeze2text.py.<br>
+<br>
+toolbin/squeeze2text.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 08:25: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=dd0961426d3e1718c17fa226f3c2c06f7eb296ce">dd0961426d3e1718c17fa226f3c2c06f7eb296ce</a>
+<blockquote>
+<p>
+ CID 354310: Remove pointless unsigned comparison with 0.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 08:11:49 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fae43bf37f78a2eef5a4418f428c41bdfd8a2738">fae43bf37f78a2eef5a4418f428c41bdfd8a2738</a>
+<blockquote>
+<p>
+ CID 354291: Add error handling for inability to allocate<br>
+<br>
+ Coverity complained about setting dash.pattern = NULL and &quot;Passing &quot;&amp;dash&quot;<br>
+ to &quot;gstate_copy_dash&quot;, which dereferences null &quot;dash.pattern&quot; which is either<br>
+ wrong, or *very* misleading. We assume that it means that gx_set_dash() *may*<br>
+ access that pointer.<br>
+<br>
+ In truth, this can never happen in these circumstances.<br>
+<br>
+ Nevertheless, in gx_set_dash() is we have a NULL mem (allocator) pointer and the<br>
+ dash pattern pointer is NULL at the point we have to copy into it, then throw<br>
+ an error.<br>
+<br>
+base/gsline.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 19:59: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=b3a7357594634fbd89a4cbf782d094289628acd6">b3a7357594634fbd89a4cbf782d094289628acd6</a>
+<blockquote>
+<p>
+ Fix bug 702139 - clist clipping bug.<br>
+<br>
+ When characters are filled as paths, the fill_adjust may be set to 0.<br>
+ Clip paths are supposed to match fill paths, i.e. the 'any part of pixel'<br>
+ rule, so we need fill_adjust of 0.5 (not 0). The most foolproof way to fix<br>
+ this is to set it in the reader when processing 'begin_clip' and restore<br>
+ it when handling the end_clip.<br>
+<br>
+ There are many progressions with this change, but it also exposes some<br>
+ cases where the change in clipping allows other elements to be seen that<br>
+ were previously hidden. Those few instances are minor and mostly seem to<br>
+ occur when page mode differs from clist mode. Examination of some of those<br>
+ cases shows that the clip path with clist mode now matches page mode and<br>
+ other elements (e.g. images) differ in extent between page and clist mode.<br>
+<br>
+base/gxclrast.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 19:39: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=ea7aa02cc5c540c3332e0d4e81209a920360d45e">ea7aa02cc5c540c3332e0d4e81209a920360d45e</a>
+<blockquote>
+<p>
+ Fix gx_default_copy_alpha_hl_color for 16 bit operation.<br>
+<br>
+ The code to write the composite data back to buffers to be sent<br>
+ to copy_alpha was getting the first byte of each 16 bit pair<br>
+ wrong in the 16bit data case.<br>
+<br>
+ Also, when we 'restart' after skipping a zero byte in the 16bit<br>
+ case we need to skip 2 bytes per pixel, not one.<br>
+<br>
+ This can be seen when running:<br>
+<br>
+ gs -r72 -o out%d.psd -sDEVICE=psdcmyk16 -dMaxBitmap=2000M<br>
+ ../tests_private/comparefiles/js.pdf<br>
+<br>
+base/gdevdbit.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 18:19: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=d720180603fcd3853436fb002c6ff9c7fc956b27">d720180603fcd3853436fb002c6ff9c7fc956b27</a>
+<blockquote>
+<p>
+ Fix psdcmyk16 blending issue.<br>
+<br>
+ Use uint32_t rather than int to avoid signedness issues.<br>
+<br>
+ Seen in the psdcmyk16 page mode rendering of<br>
+<br>
+ tests_private/comparefiles/Bug692766.pdf<br>
+<br>
+ (bad colors in 4th rgb circle intersection test).<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 15:57:36 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8f038b63bc2fab4a71191583d36b1894ae3576f5">8f038b63bc2fab4a71191583d36b1894ae3576f5</a>
+<blockquote>
+<p>
+ Fix coverity issues 354292 and 354293.<br>
+<br>
+ Don't bother testing an unsigned value for clipping against 0.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 08:58:32 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ed426e9202e04e7d90194d92daedf9a12610b9f9">ed426e9202e04e7d90194d92daedf9a12610b9f9</a>
+<blockquote>
+<p>
+ Replace 0 with NULL for pointer validation/setting.<br>
+<br>
+ Also make validation an explicit comparison with NULL i.e.:<br>
+ &quot;if (mem != NULL)&quot; rather than &quot;if (mem)&quot;.<br>
+<br>
+base/gsline.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 17:30:54 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b6fc7f2b05fa3cb7b120b05dbfa68a90da731a30">b6fc7f2b05fa3cb7b120b05dbfa68a90da731a30</a>
+<blockquote>
+<p>
+ Add support for multiple squeezes in one run.<br>
+<br>
+ E.g. MEMENTO_SQUEEZES=115867-1..+3,119928-1..+3 ...<br>
+<br>
+ This is equivalent running multiple times with MEMENTO_FAILAT set to 115866,<br>
+ 115867, 11588, 119927, 119928, 119929.<br>
+<br>
+base/memento.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 10:38:53 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cc6f92959507212b83130a24dd40b330e8ca9634">cc6f92959507212b83130a24dd40b330e8ca9634</a>
+<blockquote>
+<p>
+ Fix for MEMENTO_FAILAT=119928: only call gs_grestoreall_for_restore() if vmsave-&gt;gsave not NULL.<br>
+<br>
+ Also fix error cleanup in gs_gsave_for_save(), otherwise this fix breaks<br>
+ previous fix for MEMENTO_FAILAT=115802.<br>
+<br>
+ [Thanks to chrisl for this and various other recent fixes.]<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=119928 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+base/gsstate.c<br>
+psi/isave.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 11:21:53 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c2a030517d269b020c99bcf754cefccb556ad7bd">c2a030517d269b020c99bcf754cefccb556ad7bd</a>
+<blockquote>
+<p>
+ toolbin/squeeze2text.py: improve log output.<br>
+<br>
+ With -p, if there is gap in 'Memory squeezing @ &lt;N&gt;' output (because of calls<br>
+ to free()), output next &lt;N&gt;.<br>
+<br>
+ Also flush log output to avoid looking like we've hung.<br>
+<br>
+toolbin/squeeze2text.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 21:00: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=bab28178da29dabd691f7dee11ab5de62e329aa7">bab28178da29dabd691f7dee11ab5de62e329aa7</a>
+<blockquote>
+<p>
+ Fix issue with fts_14_1416.pdf and psdcmyk16<br>
+<br>
+ This was missed in the fix. Affected only 16 bit devices.<br>
+<br>
+ http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=b1ac0686eea6adcf2db8cabf7858796494b4459d<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 20:05:49 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a2d4a7715f465911f174a8e764ab40b40455dd68">a2d4a7715f465911f174a8e764ab40b40455dd68</a>
+<blockquote>
+<p>
+ Fix Ink names leaking.<br>
+<br>
+ The cause of the leak was a typo in gx_final_DeviceN.<br>
+<br>
+ Once this is fixed, we hit a problem where ink names are set<br>
+ to be a pointer to a static empty string, which can't be<br>
+ freed. Change to using NULL to mean empty ink name.<br>
+<br>
+base/gscdevn.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 12:01:43 -0800
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6d678da952f7f4a19fb8b9e12f8cb8013d31f04d">6d678da952f7f4a19fb8b9e12f8cb8013d31f04d</a>
+<blockquote>
+<p>
+ Memento/Valgrind tweak.<br>
+<br>
+ Ensure we mark the contents of a block readable before we<br>
+ look for pointers in it, and don't overrun the end.<br>
+<br>
+base/memento.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 12:57: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=44f00686cbaea612747c336dc201ae3f682cc81b">44f00686cbaea612747c336dc201ae3f682cc81b</a>
+<blockquote>
+<p>
+ Squash some unused variable warnings.<br>
+<br>
+base/claptrap-planar.c<br>
+base/gp_unifs.c<br>
+base/gxclpath.c<br>
+gpdl/tifftop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 12:14: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=26c2173179946ec8f70445f5941a4a20e707af88">26c2173179946ec8f70445f5941a4a20e707af88</a>
+<blockquote>
+<p>
+ pdf14_{fill_stroke_path,clist_fill_stroke_path_pattern_setup} cleanups.<br>
+<br>
+ Use a nicer method of breaking const (to avoid warnings). Ensure<br>
+ that we always put everything back as it was when we leave the<br>
+ functions, even if we have an error.<br>
+<br>
+ Remove needless cleanup code to handle functions that can never<br>
+ return an error to us returning an error.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 12:35:30 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a8839dbb536440bce927c4cb4977643495eee26a">a8839dbb536440bce927c4cb4977643495eee26a</a>
+<blockquote>
+<p>
+ pdf14_clist_fill_stroke_path_pattern_setup overprint fix.<br>
+<br>
+ Only enable CompatibleOverprint for the stroke part of stroke/fill<br>
+ patterns if we are in a subtractive space.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 11:24: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=3e84f1e1b0c52bd55145e35f8ddc0d5b8d1b65c5">3e84f1e1b0c52bd55145e35f8ddc0d5b8d1b65c5</a>
+<blockquote>
+<p>
+ Squash some warnings with gs_swapcolors_quick breaking const.<br>
+<br>
+ At various places in the code, we call gs_swapcolors_quick where<br>
+ we only have a const pgs.<br>
+<br>
+ Properly, we should copy the pgs to a non-const pgs, and then use<br>
+ that, but that would be a performance hit.<br>
+<br>
+ In all cases, we change the graphics state, then restore it before<br>
+ exit, so effectively it is const over the entire call of the<br>
+ enclosing procedure.<br>
+<br>
+ Rather than having lots of small hacky casts removing const, we<br>
+ push the const breakage into gs_swapcolors_quick itself where we<br>
+ do it in the &quot;approved&quot; way using a union.<br>
+<br>
+base/gdevp14.c<br>
+base/gsstate.c<br>
+base/gxfill.c<br>
+base/gxgstate.h<br>
+devices/vector/gdevpdfd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 10:10: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=b61365607b75d456943f95360bff101c288ba555">b61365607b75d456943f95360bff101c288ba555</a>
+<blockquote>
+<p>
+ Avoid floating point in gxblend.c<br>
+<br>
+ Use fixed point in preference.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 08:23: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=f8cd087b8a7b8c9b5cf5b8fd4d29e237f6103c7b">f8cd087b8a7b8c9b5cf5b8fd4d29e237f6103c7b</a>
+<blockquote>
+<p>
+ Implement OPM tracking in pdfwrite<br>
+<br>
+ More than somewhat to my surprise, the release testing of 9.51 revealed<br>
+ that pdfwrite was not tracking the state of overprint mode (OPM). It<br>
+ could be set by setdistillerparams, and in no other way.<br>
+<br>
+ This commit adds tracking the OPM in the graphics state, removes the<br>
+ old overprint_mode variable from the device, but preserves the ability<br>
+ to alter the OPM using setdistillerparms.<br>
+<br>
+ This also alters the initial state of OPM, the distiller params<br>
+ reference states that the 'factory default' of OPM is 1, but the PDF<br>
+ Reference says that the initial state of OPM is 0. We need to start<br>
+ with the correct setting of OPM so we change it form 1 to 0<br>
+ in gs_pdfwr.ps.<br>
+<br>
+ In passing, cast a const gs_gstate * to a gs_gstate * when used by<br>
+ gs_swapcolours_quick, in order to avoid a compiler warning.<br>
+<br>
+ This causes a small number of progressions in files using OPM (which is<br>
+ rare, its even rarer to actually alter it during the course of the file)<br>
+<br>
+Resource/Init/gs_pdfwr.ps<br>
+devices/vector/gdevpdfb.h<br>
+devices/vector/gdevpdfd.c<br>
+devices/vector/gdevpdfg.c<br>
+devices/vector/gdevpdfx.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 16:24:12 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b1ac0686eea6adcf2db8cabf7858796494b4459d">b1ac0686eea6adcf2db8cabf7858796494b4459d</a>
+<blockquote>
+<p>
+ Bug 702117 Knockout groups containing non-isolated groups<br>
+<br>
+ So this ended up being rather complicated. The first issue was that<br>
+ we were not setting the backdrop properly for non-isolated groups that<br>
+ reside in knockout groups. When that was fixed, it was revealed that we<br>
+ were not doing the recompositing operation for non-isolated knockout groups. This meant<br>
+ that the backdrop was getting applied twice effectively (once in the original<br>
+ fill and then again when the group was popped). The only file that showed<br>
+ this issue was the crazy Altona page with the many overlapping groups. Customer<br>
+ file added to provide a clearer case in the regression tests.<br>
+<br>
+base/gdevp14.c<br>
+base/gxblend.c<br>
+base/gxblend1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 17:09:41 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4ac299b11d53cf1d174a8351290918b536aa5859">4ac299b11d53cf1d174a8351290918b536aa5859</a>
+<blockquote>
+<p>
+ Fix MEMENTO_FAILAT=115867 - segv in i_unregister_root() after failure in i_register_root().<br>
+<br>
+ In pl_main_delete_instance(), don't call gs_unregister_root() if<br>
+ minst-&gt;device_root is NULL.<br>
+<br>
+ Also in pl_top_create_device(), check return from<br>
+ gs_register_struct_root(). But this doesn't appear to make any difference to<br>
+ the handling of the memento error.<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=115867 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 16:51:56 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9022073cb754ace5923c08e81d3b8d0be352abd9">9022073cb754ace5923c08e81d3b8d0be352abd9</a>
+<blockquote>
+<p>
+ Fix deep color group compose issue.<br>
+<br>
+ In commit bb7d57e84e9fe I reordered parameters to keep 8/16<br>
+ branches consistent, and missed one case.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 15:27: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=7c8c6c4ba0df88b5cbc4c0e8dab5f643a133603e">7c8c6c4ba0df88b5cbc4c0e8dab5f643a133603e</a>
+<blockquote>
+<p>
+ Remove needless &quot;isolated&quot; parameter from pdf14_mark_rect routines.<br>
+<br>
+ The value was carefully plumbed through (only in the 8bit case) in<br>
+ a recent commit, but was never actually used. Remove it a) because<br>
+ it's pointless passing a variable we don't use, and b) because it's<br>
+ another difference between 8 and 16 bit versions.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 15:21:30 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c3c922510f0498d68d7a369f0ffd70379e3d5359">c3c922510f0498d68d7a369f0ffd70379e3d5359</a>
+<blockquote>
+<p>
+ Fix typing mistake in 16bit transparency.<br>
+<br>
+ When promoting from 8 to 16 bit, shape and src_alpha become<br>
+ uint16_ts rather than bytes.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 15:06:38 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=713c776695f7a18cfd326e84fdef0b2911770609">713c776695f7a18cfd326e84fdef0b2911770609</a>
+<blockquote>
+<p>
+ Fix more overprint problems with deep color transparency.<br>
+<br>
+ Again, overprint changes to the 8 bit paths had not been<br>
+ pulled across to the 16 bit path.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-19 07:10:40 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=075abaaa9ffa03af26bed1a32d3e5114511ee786">075abaaa9ffa03af26bed1a32d3e5114511ee786</a>
+<blockquote>
+<p>
+ Added toolbin/squeeze2text.py, for processing output from MEMENTO_SQUEEZEAT=...<br>
+<br>
+ An alternative to squeeze2html.pl, outputing just summary information.<br>
+<br>
+toolbin/squeeze2text.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 11:18:11 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fbcf5865f688201fba239c5dde0078e6733538c4">fbcf5865f688201fba239c5dde0078e6733538c4</a>
+<blockquote>
+<p>
+ Fix for MEMENTO_FAILAT=115802: make gs_gsave_for_save() call gs_gsave() so it can restore after error.<br>
+<br>
+ Previously, zsave() called gs_gsave_for_save() then gs_gsave(), but if<br>
+ gs_gsave() failed we ended up with SEGV in finalise code.<br>
+<br>
+ To allow zsave() to restore things after gs_gsave() failure, we would need to<br>
+ add an include of base/gxgstate.h.<br>
+<br>
+ Instead we remove the call of gs_gsave() from zsave() and append it to<br>
+ gs_gsave_for_save(), where things can be easily restored if it fails.<br>
+<br>
+ [There are no other callers of gs_gsave_for_save().]<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=115802 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+base/gsstate.c<br>
+psi/zvmem.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 09:44:51 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=356e24a53c60710ecfee991bb91cd503e3d9873b">356e24a53c60710ecfee991bb91cd503e3d9873b</a>
+<blockquote>
+<p>
+ Avoid leaks if we get alloc failure when closing down (found by memento).<br>
+<br>
+ In gs_main_finit(), ignore gs_error_VMerror from interp_reclaim(). Such error<br>
+ ultimately comes from gs_vmreclaim() calling context_state_load(), but the<br>
+ missing info doesn't seem to be required for gs_main_finit() to carry on.<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=147801 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+psi/imain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 17:40: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=e1257c1f03a4b16794d0c2df035b7ed8685a4254">e1257c1f03a4b16794d0c2df035b7ed8685a4254</a>
+<blockquote>
+<p>
+ Fix image_color_icc_prep to properly align planar buffers.<br>
+<br>
+base/gxicolor.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 10:50: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=5ee682a20c494e8f1c65a7a95470252df6d9cdf4">5ee682a20c494e8f1c65a7a95470252df6d9cdf4</a>
+<blockquote>
+<p>
+ Enable CAL for gxicolor halftoning.<br>
+<br>
+ Looks like the calling code was unfinished, and the build<br>
+ changes were not done.<br>
+<br>
+ Also, squash some warnings.<br>
+<br>
+base/gxicolor.c<br>
+base/gximono.c<br>
+base/lib.mak<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-17 15:57:47 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d26e2d1c628d88263c4d946bdaf2145a438a1416">d26e2d1c628d88263c4d946bdaf2145a438a1416</a>
+<blockquote>
+<p>
+ Ensure the memory entry in a cloned gstate is correct.<br>
+<br>
+ In theory, we could end up cloning a graphics state with one allocator, then<br>
+ assigning the &quot;memory&quot; entry in the cloned state to that of the state we are<br>
+ cloning.<br>
+<br>
+ In practice the two have (so far) been the same, but that is not guaranteed.<br>
+<br>
+base/gsstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 11:08: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=1faa24d998afa6ce98279f26514fe14edbd62e8e">1faa24d998afa6ce98279f26514fe14edbd62e8e</a>
+<blockquote>
+<p>
+ Fix segfault cleaning up after gstate clone failure.<br>
+<br>
+ For me this happens with MEMENTO_FAILAT=112447 and for Julian it happens with<br>
+ MEMENTO_FAILAT=115905.<br>
+<br>
+ Basically, the order of events was that we'd allocate a new gstate, copy the<br>
+ contents of the existing gstate to the new one, then copy the dash pattern<br>
+ (which could fail) and copy the &quot;client_data&quot; (which could and, in this case,<br>
+ did fail). When either of those failed, we'd jump to the error handling and<br>
+ exit with the error.<br>
+<br>
+ The problem is that, by jumping to the &quot;fail&quot; label, we skip over all the code<br>
+ that fixes up the reference counts (and various other things) to account for<br>
+ the newly created gstate.<br>
+<br>
+ This commit reorders things so we allocate the gstate, copy the client data,<br>
+ copy the dash pattern, *then* assign the contents of the old gstate to the new<br>
+ one, and carry on. Thus, by the time the gstate contents are copied, the<br>
+ function cannot fail, and everything is sure to be correctly setup.<br>
+<br>
+ In the event that either the dash pattern or the client data fail to allocate,<br>
+ the new gstate is still filled with NULLs, except for the subset of<br>
+ &quot;gs_gstate_parts&quot; which are allocated and setup correctly so we can safely<br>
+ free the graphics state object before returning the error.<br>
+<br>
+ Also, use NULL for pointer validation instead of 0.<br>
+<br>
+base/gsstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 17:43:18 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f51ae6f4bf85dfa5be4b48a1a46ac69c653500c3">f51ae6f4bf85dfa5be4b48a1a46ac69c653500c3</a>
+<blockquote>
+<p>
+ Make sure pattern fills use proper alpha settings<br>
+<br>
+ Fix for regression of fts_28_2804.pdf pdfwrite output rendering<br>
+ with fill-stroke commit. This also fixes the rendering of fts_25_2526.pdf<br>
+ Bug 702033. Required a minor change in the XPS interpreter to make<br>
+ sure that patterns did not have their opacity double applied.<br>
+<br>
+base/gdevp14.c<br>
+xps/xpstile.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-19 17:20:09 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=59806f121beba543de6d78a1b5765919bce9b2cb">59806f121beba543de6d78a1b5765919bce9b2cb</a>
+<blockquote>
+<p>
+ Bug 702105: Premature EOF Infinite loop in interpolated imagemask stream.<br>
+<br>
+ Fix supplied by Peter Cherepanov. Many thanks.<br>
+<br>
+base/simscale.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-19 16:58: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=f860dbd9e699fcef50018fbd7cf84565237d78a3">f860dbd9e699fcef50018fbd7cf84565237d78a3</a>
+<blockquote>
+<p>
+ Fix &quot;blue gradients&quot; seen with psdrgb device.<br>
+<br>
+ Since the fill/stroke commit went in, some files have been showing<br>
+ gradients in the wrong colours. For instance this one, spotted in<br>
+ release testing:<br>
+<br>
+ gs -sDEVICE=psdrgb -r72 -dMaxBitmap=2000M -o out%d.psd<br>
+ ../tests_private/comparefiles/Layout.pdf<br>
+<br>
+ Bisecting the fill/stroke branch back, it seems the commit that<br>
+ caused it is the one that stops psdrgb using 'devn' colors.<br>
+<br>
+ This causes gradients to drop to using the color_info.comp_bits and<br>
+ comp_shift information, which the psd devices don't fill in.<br>
+<br>
+ The fix here is to make psd_prn_open call the standard function for<br>
+ setting up these values.<br>
+<br>
+devices/gdevpsd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 14:48:05 -0800
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=ddccae87e67a4ea101f289549e2d1692b0230509">ddccae87e67a4ea101f289549e2d1692b0230509</a>
+<blockquote>
+<p>
+ Bug701972 -- fix pdfwrite image downscaling bug<br>
+<br>
+ Calculate the bits on the row using the input image width,<br>
+ not the output image width.<br>
+<br>
+ I had to add an extra argument to a few functions to propagate the info<br>
+ down to where it is needed.<br>
+<br>
+ Note obscure case involving calling psdf_setup_image_to_mask_filter()<br>
+ for a Type 4 image and CompatibilityLevel &lt; 1.3. This change just<br>
+ adds the extra input_width arg, which doesn't change whatever it was<br>
+ doing before. If there is a bug lurking here, it seems unlikely<br>
+ anybody cares?<br>
+<br>
+devices/vector/gdevpdfi.c<br>
+devices/vector/gdevpsdf.h<br>
+devices/vector/gdevpsdi.c<br>
+devices/vector/gdevpsds.c<br>
+devices/vector/gdevpsds.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 09:22:55 -0800
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4e2eaa8324ee4428de337ae3c31a695e68ede75b">4e2eaa8324ee4428de337ae3c31a695e68ede75b</a>
+<blockquote>
+<p>
+ Set the BitsPerComponent for alt stream in pdfwrite<br>
+<br>
+ Add this to the image[1] code where it was missing<br>
+<br>
+ This fixes bug where compressed images were correct, but if<br>
+ -dEncodeGrayImages=false was used, then they were truncated.<br>
+<br>
+ This is related to trimmed/rescaled image for Bug701972.<br>
+ See the sample trim-nobug.pdf attached to that bug.<br>
+<br>
+devices/vector/gdevpdfi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 19:25: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=76fb18bc255a88cab5fbb2410b411e580f53486d">76fb18bc255a88cab5fbb2410b411e580f53486d</a>
+<blockquote>
+<p>
+ Bug 702131: Fix overprint in additive spaces.<br>
+<br>
+ We should only enter CompatibleOverprint blend mode if we<br>
+ are in an subtractive space. This stops pdf14 trying to honour<br>
+ drawn_comps even in additive spaces.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 14:02:24 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f1b16fe2d0c6f23923fd26d03544030bc285365a">f1b16fe2d0c6f23923fd26d03544030bc285365a</a>
+<blockquote>
+<p>
+ Fix bug 702079: SEGV with clist and PCL caused by wrong color in images.<br>
+<br>
+ The clist_image_plane_data function was called with the dev_color for a band<br>
+ being type &lt;pattern&gt; when the image had type &lt;pure&gt;, but the code was not<br>
+ calling cmd_put_drawing_color to update the bands for the image because uses_color<br>
+ was false. Add rop3_uses_S(pgs0&gt;log_op) as well as (||) rop3_uses_T(pgs-&gt;log_op)<br>
+ when CombineWitColor is true.<br>
+ Note that extra calls to cmd_put_drawing_color before an image are low cost<br>
+ and do nothing if the current device color is already the same.<br>
+<br>
+base/gxclimag.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 09:48:07 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=646007af056447fefd61eabfcdae85bfd6017d24">646007af056447fefd61eabfcdae85bfd6017d24</a>
+<blockquote>
+<p>
+ Bug 702128 : clist pdf14 overprint state<br>
+<br>
+ This change ensures that gxdso_overprint_active<br>
+ gets the proper state information.<br>
+<br>
+ When the clist writer is active with the pdf14 device, the writer maintains<br>
+ the current overprint state (as the writer has no access to the pdf14 member variables)<br>
+ and must know what to put in the clist.<br>
+<br>
+ When the clist writer is not present (i.e. page mode), the pdf14 device<br>
+ maintains the information.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 11:46: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=6ace930c11984e64aded98f1ff8db47104424354">6ace930c11984e64aded98f1ff8db47104424354</a>
+<blockquote>
+<p>
+ Bug 702068 continued: Fix smasked images with masks.<br>
+<br>
+ Release testing has shown up another case that needs help.<br>
+<br>
+ gs/bin -sDEVICE=ppmraw -o out.ppm -r300 -dMaxBitmap=1G<br>
+ tests_private/pdf/sumatra/1901_-_tiling_inconsistencies.pdf<br>
+<br>
+ This shows horizontal white lines in the &quot;Next&quot; &quot;Up&quot; &quot;Previous&quot;<br>
+ images at the top of the page.<br>
+<br>
+ Investigation shows this is due to the images having Masks as well<br>
+ as SMasks.<br>
+<br>
+ The Mask image is run to a 1 bit memory device, which means that<br>
+ the gxdso to check if we are in an SMask doesn't work. We work<br>
+ around this by introducing a new flag to gs_pixel_image_common<br>
+ that we can set to indicate that we are within an smask. We set<br>
+ this when we set the masked image up (using the gxdso), and check<br>
+ it when we come to do the gridfitting.<br>
+<br>
+base/gsiparam.h<br>
+base/gxclrast.c<br>
+base/gximage.c<br>
+base/gximage3.c<br>
+base/gxipixel.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-17 19:31: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=bb7d57e84e9fe615832b2d5811f4c9cd4d443cd1">bb7d57e84e9fe615832b2d5811f4c9cd4d443cd1</a>
+<blockquote>
+<p>
+ Sync deep colour blending with recent changes to 8 bit blending.<br>
+<br>
+ Release testing reveals problems with deep color blending and<br>
+ overprint. This is because changes were made to the 8bit<br>
+ branches of gxblend.c that weren't fully reflected in the<br>
+ 16bit branches.<br>
+<br>
+ Reapply those changes here.<br>
+<br>
+ While we're at it, address some other minor code cleanups,<br>
+ including keeping the ordering of parameters the same between 8<br>
+ and 16 bit to avoid confusion in future.<br>
+<br>
+ The command that showed the inital problem was:<br>
+<br>
+ bin/gswin32c.exe -o out.psd -sDEVICE=psdcmyk16 tests_private/comparefiles/Bug695916.pdf<br>
+<br>
+ where the image of the Earth did not appear.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-17 13:27: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=e51ba18f031c4b5f6a14c0a559391fe30f409dd1">e51ba18f031c4b5f6a14c0a559391fe30f409dd1</a>
+<blockquote>
+<p>
+ Bug 702130: Fix JPEG memory failure problems.<br>
+<br>
+ The SEGV reported by Memento squeezing (which oddly is at 113600<br>
+ for me, rather than Julian's higher number) is caused by jpeglib<br>
+ calling 'mem_term' on something that failed to 'mem_init'.<br>
+<br>
+ The fix is to use gs_memory_chunk_unwrap rather than target/release,<br>
+ and to check whether mem == cmem to see whether that actually did<br>
+ unwrap.<br>
+<br>
+ This runs us into a further problem, where we are freeing the<br>
+ custom memory descriptor using a gc memory pointer, where it was<br>
+ allocated using a non gc one.<br>
+<br>
+ Rather than just changing the free to use the non gc one, we take<br>
+ the opportunity to ensure that ALL the blocks are in non gc memory.<br>
+ JPEGlib will take poorly to its memory being gc'd away, and none<br>
+ of it needs to subject to gc.<br>
+<br>
+ Credit goes largely to Chris for this fix.<br>
+<br>
+base/sjpegc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 18:44: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=55a7a41998f35ae23aedf2fdb83698dde1453d58">55a7a41998f35ae23aedf2fdb83698dde1453d58</a>
+<blockquote>
+<p>
+ Bug 702124 (continued): Avoid FP errors leading to empty pattern cells.<br>
+<br>
+ The limited accuracy of floats can cause pattern cells to appear to<br>
+ be empty when they are not.<br>
+<br>
+ Avoid adding the (often large) tx and ty components in until after we<br>
+ have calculated the width/heights.<br>
+<br>
+base/gsptype1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 18:43: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=182d5c10ed11570dd08e6203d832e06a73853f17">182d5c10ed11570dd08e6203d832e06a73853f17</a>
+<blockquote>
+<p>
+ Bug 702124: Avoid VMerror when a pattern cell height is 0.<br>
+<br>
+ We detect buffer_height == 0 and take it to mean that we can't<br>
+ get a large enough buffer for even a single scanline. Actually<br>
+ it can mean that the pattern cell was empty, which gives a<br>
+ spurious error.<br>
+<br>
+base/gxmclip.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 17:08:12 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f5b7acb59c4f2e88591aab9f355813e0b7b68db5">f5b7acb59c4f2e88591aab9f355813e0b7b68db5</a>
+<blockquote>
+<p>
+ Fix segv after memento squeeze in psdf_DCT_filter().<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=117152 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+devices/vector/gdevpsdu.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 14:54:42 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9fd069e5c91126e78b51625c72d884615370098c">9fd069e5c91126e78b51625c72d884615370098c</a>
+<blockquote>
+<p>
+ Fixed double free after alloc failure in gs_lib_ctx_set_icc_directory*() (found by memento).<br>
+<br>
+ After we've freed p_ctx-&gt;profiledir we need to set it to NULL otherwise if we<br>
+ return an error it will be freed a second time when we close down.<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=101810 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+base/gslibctx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 11:12:37 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d86e9d8251e142ab9aae9f50923414c0c18bf1d3">d86e9d8251e142ab9aae9f50923414c0c18bf1d3</a>
+<blockquote>
+<p>
+ Fixed leak on error in gs_fapi_ufst_init() (found by memento).<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=22 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+base/fapiufst.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 19:48:01 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d7d68f45bfc227f7c7a6fdd5f8ef078bbf7ca77f">d7d68f45bfc227f7c7a6fdd5f8ef078bbf7ca77f</a>
+<blockquote>
+<p>
+ Bug 702121: PCL performance degradation<br>
+<br>
+ Henry chased the cause down to commit b399f84, an attempt to<br>
+ fix Bug 700624. Looking at that code now, it has a silly typo<br>
+ in it, that was causing it not be triggered in cases when it<br>
+ should have been. Fixed here.<br>
+<br>
+base/gxpcmap.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 11:11:40 -0800
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b58e9010ce17bce450e4c042b93bafc460b9d94a">b58e9010ce17bce450e4c042b93bafc460b9d94a</a>
+<blockquote>
+<p>
+ Alternative fix for leaks after error in gs_main_init_with_args01()<br>
+<br>
+ When memory squeezing gpdl, Julian found leaks in the gpdl<br>
+ startup of the postscript interpreter when allocations failed<br>
+ in gs_main_init_with_args01().<br>
+<br>
+ Here, we fix the problem by making the psitop.c layer within gpdl<br>
+ call the appropriate shutdown code when we catch the error. This<br>
+ moves gpdl to being consistent with other users of the gs_main<br>
+ layer.<br>
+<br>
+ Memento memory squeezing around the point of failure (event 2035)<br>
+ now shows this to be OK.<br>
+<br>
+ MEMENTO_SQUEEZEAT=2034 ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+gpdl/psitop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 18:47: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=5fc8e7c0b656d4e2be8f5e316121f06039c35273">5fc8e7c0b656d4e2be8f5e316121f06039c35273</a>
+<blockquote>
+<p>
+ Revert &quot;Fix leaks after error in gs_main_init_with_args01() (found by memento).&quot;<br>
+<br>
+ This reverts commit f35924926cb35f08be5a12ded4a00eb2f42aed3e.<br>
+<br>
+ When memory squeezing gpdl, Julian found leaks in the gpdl<br>
+ startup of the postscript interpreter when allocations failed<br>
+ in gs_main_init_with_args01().<br>
+<br>
+ The initial fix attempted was to make gs_main_init_with_args01()<br>
+ closedown the interpreter on such errors. This worked for the<br>
+ tested cases, but hid problems with non-memory related errors<br>
+ (such as not being able to open a file specified on the command<br>
+ line) when called by gs (rather than gpdl).<br>
+<br>
+ The change attempted resulted in gs_main_finit() being called<br>
+ twice as gs (and other users of the gs_main APIs) expect to have<br>
+ to call gs_main_finit() to shut down after gs_main_init_with_args01()<br>
+ returns an error code.<br>
+<br>
+ The real problem is that gpdl is not doing this in the same way as<br>
+ other callers.<br>
+<br>
+ The gs_main layer has existed for donkeys years, so it's probably<br>
+ best that we just take it as fixed and don't require callers to<br>
+ start changing stuff now.<br>
+<br>
+ Accordingly, I am reverting the attempted fix here, and will<br>
+ try a different fix for it that only affects gpdl shortly.<br>
+<br>
+psi/imainarg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 16:48: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=cd5f21df6c710664ff0ba3f100ca5283d9367ed8">cd5f21df6c710664ff0ba3f100ca5283d9367ed8</a>
+<blockquote>
+<p>
+ Bug 702116 Avoid NULL dereference<br>
+<br>
+ In certain cases if the source color space is separation or deviceN<br>
+ and we are doing image interpolation with the use of fast color option<br>
+ there was a potential dereference of a NULL pointer since the color<br>
+ space will not have an ICC profile.<br>
+<br>
+base/gxiscale.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-11 16:48:24 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=1f6b351a5048b5a14d52431c833da6ed3386a7bf">1f6b351a5048b5a14d52431c833da6ed3386a7bf</a>
+<blockquote>
+<p>
+ Change to improve memory and speed (Bug 702099)<br>
+<br>
+ As described in the bug, the patch to disable high-level images in<br>
+ pattern-clists when Interpolate is true is no longer needed (hasn't<br>
+ been since 2015), and it causes the memory and performance problems<br>
+ with this type of file.<br>
+<br>
+base/gxclimag.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 15:10:54 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c5883877d1dc7abbd7600eb688f7cf4ad34db0cc">c5883877d1dc7abbd7600eb688f7cf4ad34db0cc</a>
+<blockquote>
+<p>
+ Bug 702114 non-isolated group in knockout group<br>
+<br>
+ Make sure to use the parents backdrop as our backdrop when we<br>
+ push a non-isolated group that resides in a knockout group.<br>
+ Note though that this apparently is not the case if we are<br>
+ constructing a soft mask.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 10:54: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=06a08fca00194531df25652b46eca8f8e4dfd7cc">06a08fca00194531df25652b46eca8f8e4dfd7cc</a>
+<blockquote>
+<p>
+ Bug 702113 Softmask with transfer function<br>
+<br>
+ In a couple spots we look at the value of the background value<br>
+ of the softmask to decide if we really need the softmask in<br>
+ areas outside the group bounding box. These checks were not<br>
+ considering the impact of the transfer function.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 10:22:32 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6fc5cbc5bc57ae2c47d1276f1ea0c0f16017b4bb">6fc5cbc5bc57ae2c47d1276f1ea0c0f16017b4bb</a>
+<blockquote>
+<p>
+ Bump version number pending 9.51 release<br>
+<br>
+Resource/Init/gs_init.ps<br>
+base/gscdefs.h<br>
+base/version.mak<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-19 08:14: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=e49830f8efdbc3a9f4e8acaf708b68a742f515aa">e49830f8efdbc3a9f4e8acaf708b68a742f515aa</a>
+<blockquote>
+<p>
+ Version, dates etc for 9.52 release<br>
+<br>
+Resource/Init/gs_init.ps<br>
+base/version.mak<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/gs-vms.hlp<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+man/dvipdf.1<br>
+man/gs.1<br>
+man/gslp.1<br>
+man/gsnd.1<br>
+man/pdf2dsc.1<br>
+man/pdf2ps.1<br>
+man/pf2afm.1<br>
+man/pfbtopfa.1<br>
+man/printafm.1<br>
+man/ps2ascii.1<br>
+man/ps2epsi.1<br>
+man/ps2pdf.1<br>
+man/ps2pdfwr.1<br>
+man/ps2ps.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-17 15:54: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=0cade062486c0ae9c883970dea1c555a8ffcff84">0cade062486c0ae9c883970dea1c555a8ffcff84</a>
+<blockquote>
+<p>
+ Release notes for 9.52 release<br>
+<br>
+doc/History9.htm<br>
+doc/News.htm<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-17 15:52: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=c76b5f64e0525e4ddf9e5c311a1b75fe738298dc">c76b5f64e0525e4ddf9e5c311a1b75fe738298dc</a>
+<blockquote>
+<p>
+ Add references to the 64 bit windows exes<br>
+<br>
+doc/Use.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-14 15:07: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=eec073529fb8dc0c3bb6d612b61bf483d135c9cf">eec073529fb8dc0c3bb6d612b61bf483d135c9cf</a>
+<blockquote>
+<p>
+ Bug 702217: Reinstate dynamic libs LDFLAGS for MacOS<br>
+<br>
+ With the significant revamp of the platform detection functions in configure<br>
+ the LDFLAGS for building the gs shared library on MacOS went astray. This<br>
+ puts them back in.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-16 09:06:16 +0000
+</strong>
+<br>Ken Sharp &lt;ken.sharp@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a9cd9959372b9f14b493b87df57664ea831c5d80">a9cd9959372b9f14b493b87df57664ea831c5d80</a>
+<blockquote>
+<p>
+ Repair device subclassing after fill+stroke commit<br>
+<br>
+ Bug 702221 &quot;Ghostscript 9.51 - SIGFPE when -dFirstPage or -dLastPage is set&quot;<br>
+<br>
+ The fill+stroke commit had an error with the default method for handling<br>
+ fill_stroke_path which passed the subclassing device as a parameter to<br>
+ the child, instead of passing the child device. This caused seg faults,<br>
+ floating point exceptions, hangs, and possibly other problems.<br>
+<br>
+ In addition the object filtering device had been modified to pass the<br>
+ fill+stroke method to the default handler, instead of checking to see<br>
+ if vector operations should be dropped.<br>
+<br>
+ This commit fixes both problems.<br>
+<br>
+base/gdevoflt.c<br>
+base/gdevsclass.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-14 10:56: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=f712440a2f251ae06277ec4a5ffe8ce7599aa4d8">f712440a2f251ae06277ec4a5ffe8ce7599aa4d8</a>
+<blockquote>
+<p>
+ Add ARCH_MAX_SIZE_T to configure's arch.h prototype<br>
+<br>
+arch/arch_autoconf.h.in<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-14 10:53: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=214d16924543fb3116a031463052e8b0eff3f1ae">214d16924543fb3116a031463052e8b0eff3f1ae</a>
+<blockquote>
+<p>
+ Don't fail on missing freetype for auxtools run<br>
+<br>
+ When cross compiling, we shouldn't fail the recursive call to configure if<br>
+ there's no freetype - since it's not required for auxtools.<br>
+<br>
+configure.ac<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-12 11: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=b02467bd535d50d221e4f7c371867603f5368f36">b02467bd535d50d221e4f7c371867603f5368f36</a>
+<blockquote>
+<p>
+ Dates, changelog etc for 9.51 release<br>
+<br>
+base/gscdefs.h<br>
+base/version.mak<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/gs-vms.hlp<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+man/dvipdf.1<br>
+man/gs.1<br>
+man/gslp.1<br>
+man/gsnd.1<br>
+man/pdf2dsc.1<br>
+man/pdf2ps.1<br>
+man/pf2afm.1<br>
+man/pfbtopfa.1<br>
+man/printafm.1<br>
+man/ps2ascii.1<br>
+man/ps2epsi.1<br>
+man/ps2pdf.1<br>
+man/ps2pdfwr.1<br>
+man/ps2ps.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-02 17:10: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=15f5f8bad503e9d3e63db9c3ca395deffd6b1e20">15f5f8bad503e9d3e63db9c3ca395deffd6b1e20</a>
+<blockquote>
+<p>
+ Fix 16bit blending problem.<br>
+<br>
+ Seen with:<br>
+<br>
+ gs -sDEVICE=psdcmyk16 -o out%d.psd -r72 -dMaxBitmap=2000M<br>
+ tests_private/pdf/forms/v1.5/proxy_vol_1_number_1_1.pdf<br>
+<br>
+ on page 3.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-02 11:16: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=d5809b79052b20c723700cce75e7e1543a3ddc23">d5809b79052b20c723700cce75e7e1543a3ddc23</a>
+<blockquote>
+<p>
+ Dates/logs for 9.51 release candidate 3<br>
+<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/gs-vms.hlp<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+man/dvipdf.1<br>
+man/gs.1<br>
+man/gslp.1<br>
+man/gsnd.1<br>
+man/pdf2dsc.1<br>
+man/pdf2ps.1<br>
+man/pf2afm.1<br>
+man/pfbtopfa.1<br>
+man/printafm.1<br>
+man/ps2ascii.1<br>
+man/ps2epsi.1<br>
+man/ps2pdf.1<br>
+man/ps2pdfwr.1<br>
+man/ps2ps.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-02 11:04:32 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f6e3e9238bb5cf7fe44c3c845be286a3314ed905">f6e3e9238bb5cf7fe44c3c845be286a3314ed905</a>
+<blockquote>
+<p>
+ Fix 64bit non-console windows build.<br>
+<br>
+ The creation of the text window was truncating the pointer to<br>
+ long (32bit) size. No idea how we've been getting away with this<br>
+ in the past. I can only assume this has been exposed by<br>
+ differences in the runtime lib with vs2019 as compared to<br>
+ earlier versions.<br>
+<br>
+psi/dwtext.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-03-02 09:02: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=ffe0e5cf33feee7672e5f4281f0c0b0ff66bddda">ffe0e5cf33feee7672e5f4281f0c0b0ff66bddda</a>
+<blockquote>
+<p>
+ Add mention of deprecating/removing opvp/oprp devices<br>
+<br>
+doc/History9.htm<br>
+doc/News.htm<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-28 08:30: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=a1478a72a3ccb8564c2b1c5c87d3dbe23a5ffff2">a1478a72a3ccb8564c2b1c5c87d3dbe23a5ffff2</a>
+<blockquote>
+<p>
+ Dates, changelog etc for 9.51rc2<br>
+<br>
+base/gscdefs.h<br>
+base/version.mak<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/gs-vms.hlp<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+man/dvipdf.1<br>
+man/gs.1<br>
+man/gslp.1<br>
+man/gsnd.1<br>
+man/pdf2dsc.1<br>
+man/pdf2ps.1<br>
+man/pf2afm.1<br>
+man/pfbtopfa.1<br>
+man/printafm.1<br>
+man/ps2ascii.1<br>
+man/ps2epsi.1<br>
+man/ps2pdf.1<br>
+man/ps2pdfwr.1<br>
+man/ps2ps.1<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 15:22: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=dbaddcf6e251229a1506f2df33844365df39de44">dbaddcf6e251229a1506f2df33844365df39de44</a>
+<blockquote>
+<p>
+ Fix signed issue in 16bit alpha blending fill_rectangle routines.<br>
+<br>
+ As seen by the central spot in the pink region of page 1 of:<br>
+<br>
+ gs -sDEVICE=psdcmyk16 -o out%d.psd -dMaxBitmap=2000M<br>
+ tests_private/pdf/pdf_1.7_ATS_EXXPA1DC_PDFACT.pdf<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 15:09: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=4ad8020c3cb63345dd76119e8978c3353940a68e">4ad8020c3cb63345dd76119e8978c3353940a68e</a>
+<blockquote>
+<p>
+ pdfwrite - Fix indeterminism with QL shading tests<br>
+<br>
+ When creating a new colour space to put in a PDF file we perform various<br>
+ tests to see if its a space we have already written, to prevent writing<br>
+ duplicate spaces (we perform similar tests for most resources).<br>
+<br>
+ In some cases, when we write the resource to a file, we create an MD5<br>
+ hash and compare those to see if the resources are the same. In the<br>
+ case of colour spaces, however, they are retained in memory and so we<br>
+ use a different method. We 'serialise' the colour space. This is not the<br>
+ same as writing it to the PDF file, and its a graphics library thing not<br>
+ a pdfwrite function. Basically this writes out the content of the<br>
+ various C structures. The stream we use is an in-memory stream.<br>
+<br>
+ Unfortunately, for Separation colour spaces, there was a fault in the<br>
+ function which writes the colour space name, and it was writing out<br>
+ the bytes forming the address of the name instead of the actual string.<br>
+<br>
+ This could, very rarely, mean that we would mis-identify a new colour<br>
+ space as being the same as an old colour space, and so would reuse the<br>
+ old space instead of creating a new one.<br>
+<br>
+ I've checked the DeviceN code and it does not suffer the same problem.<br>
+<br>
+base/gscsepr.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 13:03:56 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3cb8b3a403450d617b2b96ec0349bb99ce0d8379">3cb8b3a403450d617b2b96ec0349bb99ce0d8379</a>
+<blockquote>
+<p>
+ Fix the overflow case in 16 bit saturation blending.<br>
+<br>
+ As seen with the second apple of the bottom row of page 1<br>
+ of:<br>
+<br>
+ gs -sDEVICE=psdcmyk16 -r72 -o out%d.psd -dMaxBitmap=2000M<br>
+ ../tests_private/pdf/PDF_1.7_ATS/AIX4G1C3.pdf<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 17:10:51 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5d4305e916d3f75492d03dfd79ab1aaedf9545e3">5d4305e916d3f75492d03dfd79ab1aaedf9545e3</a>
+<blockquote>
+<p>
+ Fix for bug 702150: make pl_main_run_file_utf8() check for error from s_process_read_buf().<br>
+<br>
+ Avoids infinite loop in:<br>
+ ./membin/gpcl6 -sDEVICE=ppmraw -o /dev/null .<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 18:24:55 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2c6efee0f594ad29394bf8a303f21d85dcb1d70a">2c6efee0f594ad29394bf8a303f21d85dcb1d70a</a>
+<blockquote>
+<p>
+ minor improvements to toolbin/squeeze2text.py.<br>
+<br>
+toolbin/squeeze2text.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 08:25: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=ef5dfe7e3b3858bdfb20c168b4818c4d65fb932f">ef5dfe7e3b3858bdfb20c168b4818c4d65fb932f</a>
+<blockquote>
+<p>
+ CID 354310: Remove pointless unsigned comparison with 0.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-26 08:11:49 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=29335f43967a0f089d6f2f37883a22f1516f7bde">29335f43967a0f089d6f2f37883a22f1516f7bde</a>
+<blockquote>
+<p>
+ CID 354291: Add error handling for inability to allocate<br>
+<br>
+ Coverity complained about setting dash.pattern = NULL and &quot;Passing &quot;&amp;dash&quot;<br>
+ to &quot;gstate_copy_dash&quot;, which dereferences null &quot;dash.pattern&quot; which is either<br>
+ wrong, or *very* misleading. We assume that it means that gx_set_dash() *may*<br>
+ access that pointer.<br>
+<br>
+ In truth, this can never happen in these circumstances.<br>
+<br>
+ Nevertheless, in gx_set_dash() is we have a NULL mem (allocator) pointer and the<br>
+ dash pattern pointer is NULL at the point we have to copy into it, then throw<br>
+ an error.<br>
+<br>
+base/gsline.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 19:59: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=1d0889b9fcf3a5d5012fad021b4c53828879016e">1d0889b9fcf3a5d5012fad021b4c53828879016e</a>
+<blockquote>
+<p>
+ Fix bug 702139 - clist clipping bug.<br>
+<br>
+ When characters are filled as paths, the fill_adjust may be set to 0.<br>
+ Clip paths are supposed to match fill paths, i.e. the 'any part of pixel'<br>
+ rule, so we need fill_adjust of 0.5 (not 0). The most foolproof way to fix<br>
+ this is to set it in the reader when processing 'begin_clip' and restore<br>
+ it when handling the end_clip.<br>
+<br>
+ There are many progressions with this change, but it also exposes some<br>
+ cases where the change in clipping allows other elements to be seen that<br>
+ were previously hidden. Those few instances are minor and mostly seem to<br>
+ occur when page mode differs from clist mode. Examination of some of those<br>
+ cases shows that the clip path with clist mode now matches page mode and<br>
+ other elements (e.g. images) differ in extent between page and clist mode.<br>
+<br>
+base/gxclrast.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 19:39: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=86f81e9b799b66207c699768616a6e3ba3c311c3">86f81e9b799b66207c699768616a6e3ba3c311c3</a>
+<blockquote>
+<p>
+ Fix gx_default_copy_alpha_hl_color for 16 bit operation.<br>
+<br>
+ The code to write the composite data back to buffers to be sent<br>
+ to copy_alpha was getting the first byte of each 16 bit pair<br>
+ wrong in the 16bit data case.<br>
+<br>
+ Also, when we 'restart' after skipping a zero byte in the 16bit<br>
+ case we need to skip 2 bytes per pixel, not one.<br>
+<br>
+ This can be seen when running:<br>
+<br>
+ gs -r72 -o out%d.psd -sDEVICE=psdcmyk16 -dMaxBitmap=2000M<br>
+ ../tests_private/comparefiles/js.pdf<br>
+<br>
+base/gdevdbit.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 18:19: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=635303ca7d8a36b3dabc9afbd9132f4b9a36dce5">635303ca7d8a36b3dabc9afbd9132f4b9a36dce5</a>
+<blockquote>
+<p>
+ Fix psdcmyk16 blending issue.<br>
+<br>
+ Use uint32_t rather than int to avoid signedness issues.<br>
+<br>
+ Seen in the psdcmyk16 page mode rendering of<br>
+<br>
+ tests_private/comparefiles/Bug692766.pdf<br>
+<br>
+ (bad colors in 4th rgb circle intersection test).<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 15:57:36 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a00c75369e082798d82202a2b64d8e4b484d0c11">a00c75369e082798d82202a2b64d8e4b484d0c11</a>
+<blockquote>
+<p>
+ Fix coverity issues 354292 and 354293.<br>
+<br>
+ Don't bother testing an unsigned value for clipping against 0.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-25 08:58:32 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=32f3d6703a7e5c6582c066837783c6697e98b1ca">32f3d6703a7e5c6582c066837783c6697e98b1ca</a>
+<blockquote>
+<p>
+ Replace 0 with NULL for pointer validation/setting.<br>
+<br>
+ Also make validation an explicit comparison with NULL i.e.:<br>
+ &quot;if (mem != NULL)&quot; rather than &quot;if (mem)&quot;.<br>
+<br>
+base/gsline.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 17:30:54 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6c1002cc251907e702fd5db9dc81365a964816c6">6c1002cc251907e702fd5db9dc81365a964816c6</a>
+<blockquote>
+<p>
+ Add support for multiple squeezes in one run.<br>
+<br>
+ E.g. MEMENTO_SQUEEZES=115867-1..+3,119928-1..+3 ...<br>
+<br>
+ This is equivalent running multiple times with MEMENTO_FAILAT set to 115866,<br>
+ 115867, 11588, 119927, 119928, 119929.<br>
+<br>
+base/memento.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 10:38:53 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=39557bd53eee75a8b8f762457ce57a5437e79d6c">39557bd53eee75a8b8f762457ce57a5437e79d6c</a>
+<blockquote>
+<p>
+ Fix for MEMENTO_FAILAT=119928: only call gs_grestoreall_for_restore() if vmsave-&gt;gsave not NULL.<br>
+<br>
+ Also fix error cleanup in gs_gsave_for_save(), otherwise this fix breaks<br>
+ previous fix for MEMENTO_FAILAT=115802.<br>
+<br>
+ [Thanks to chrisl for this and various other recent fixes.]<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=119928 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+base/gsstate.c<br>
+psi/isave.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 11:21:53 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=60507d492507817bb5ae14a17a01d19c50d41e0a">60507d492507817bb5ae14a17a01d19c50d41e0a</a>
+<blockquote>
+<p>
+ toolbin/squeeze2text.py: improve log output.<br>
+<br>
+ With -p, if there is gap in 'Memory squeezing @ &lt;N&gt;' output (because of calls<br>
+ to free()), output next &lt;N&gt;.<br>
+<br>
+ Also flush log output to avoid looking like we've hung.<br>
+<br>
+toolbin/squeeze2text.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 21:00: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=3a9ea36465e97ce729c5ab26dc8e0d1435b7b246">3a9ea36465e97ce729c5ab26dc8e0d1435b7b246</a>
+<blockquote>
+<p>
+ Fix issue with fts_14_1416.pdf and psdcmyk16<br>
+<br>
+ This was missed in the fix. Affected only 16 bit devices.<br>
+<br>
+ http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=b1ac0686eea6adcf2db8cabf7858796494b4459d<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 20:05:49 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8f3320f9b6214907d24a4a9f77638b199aa95f8e">8f3320f9b6214907d24a4a9f77638b199aa95f8e</a>
+<blockquote>
+<p>
+ Fix Ink names leaking.<br>
+<br>
+ The cause of the leak was a typo in gx_final_DeviceN.<br>
+<br>
+ Once this is fixed, we hit a problem where ink names are set<br>
+ to be a pointer to a static empty string, which can't be<br>
+ freed. Change to using NULL to mean empty ink name.<br>
+<br>
+base/gscdevn.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 12:01:43 -0800
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b28d57e7422d2d4df8c805342ad01dfc6c6e1232">b28d57e7422d2d4df8c805342ad01dfc6c6e1232</a>
+<blockquote>
+<p>
+ Memento/Valgrind tweak.<br>
+<br>
+ Ensure we mark the contents of a block readable before we<br>
+ look for pointers in it, and don't overrun the end.<br>
+<br>
+base/memento.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 12:57: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=0822ac2a5f1f02315a783504fccf615a55cf494f">0822ac2a5f1f02315a783504fccf615a55cf494f</a>
+<blockquote>
+<p>
+ Squash some unused variable warnings.<br>
+<br>
+base/claptrap-planar.c<br>
+base/gp_unifs.c<br>
+base/gxclpath.c<br>
+gpdl/tifftop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 12:14: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=82a2d6356858c0a4ab9ff7fa294c0380d04aa9e3">82a2d6356858c0a4ab9ff7fa294c0380d04aa9e3</a>
+<blockquote>
+<p>
+ pdf14_{fill_stroke_path,clist_fill_stroke_path_pattern_setup} cleanups.<br>
+<br>
+ Use a nicer method of breaking const (to avoid warnings). Ensure<br>
+ that we always put everything back as it was when we leave the<br>
+ functions, even if we have an error.<br>
+<br>
+ Remove needless cleanup code to handle functions that can never<br>
+ return an error to us returning an error.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 12:35:30 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b1ff23ccf08707af544de59d6c59971d0c17098c">b1ff23ccf08707af544de59d6c59971d0c17098c</a>
+<blockquote>
+<p>
+ pdf14_clist_fill_stroke_path_pattern_setup overprint fix.<br>
+<br>
+ Only enable CompatibleOverprint for the stroke part of stroke/fill<br>
+ patterns if we are in a subtractive space.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 11:24: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=389324fd827e1172eb358b616a32af5fcb2633f6">389324fd827e1172eb358b616a32af5fcb2633f6</a>
+<blockquote>
+<p>
+ Squash some warnings with gs_swapcolors_quick breaking const.<br>
+<br>
+ At various places in the code, we call gs_swapcolors_quick where<br>
+ we only have a const pgs.<br>
+<br>
+ Properly, we should copy the pgs to a non-const pgs, and then use<br>
+ that, but that would be a performance hit.<br>
+<br>
+ In all cases, we change the graphics state, then restore it before<br>
+ exit, so effectively it is const over the entire call of the<br>
+ enclosing procedure.<br>
+<br>
+ Rather than having lots of small hacky casts removing const, we<br>
+ push the const breakage into gs_swapcolors_quick itself where we<br>
+ do it in the &quot;approved&quot; way using a union.<br>
+<br>
+base/gdevp14.c<br>
+base/gsstate.c<br>
+base/gxfill.c<br>
+base/gxgstate.h<br>
+devices/vector/gdevpdfd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 10:10: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=449433ff6689c603a56186dbde5721f6139aa939">449433ff6689c603a56186dbde5721f6139aa939</a>
+<blockquote>
+<p>
+ Avoid floating point in gxblend.c<br>
+<br>
+ Use fixed point in preference.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-24 08:23: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=6badfb362efe0fb4f0c3df106a33ecd5b0265ef7">6badfb362efe0fb4f0c3df106a33ecd5b0265ef7</a>
+<blockquote>
+<p>
+ Implement OPM tracking in pdfwrite<br>
+<br>
+ More than somewhat to my surprise, the release testing of 9.51 revealed<br>
+ that pdfwrite was not tracking the state of overprint mode (OPM). It<br>
+ could be set by setdistillerparams, and in no other way.<br>
+<br>
+ This commit adds tracking the OPM in the graphics state, removes the<br>
+ old overprint_mode variable from the device, but preserves the ability<br>
+ to alter the OPM using setdistillerparms.<br>
+<br>
+ This also alters the initial state of OPM, the distiller params<br>
+ reference states that the 'factory default' of OPM is 1, but the PDF<br>
+ Reference says that the initial state of OPM is 0. We need to start<br>
+ with the correct setting of OPM so we change it form 1 to 0<br>
+ in gs_pdfwr.ps.<br>
+<br>
+ In passing, cast a const gs_gstate * to a gs_gstate * when used by<br>
+ gs_swapcolours_quick, in order to avoid a compiler warning.<br>
+<br>
+ This causes a small number of progressions in files using OPM (which is<br>
+ rare, its even rarer to actually alter it during the course of the file)<br>
+<br>
+Resource/Init/gs_pdfwr.ps<br>
+devices/vector/gdevpdfb.h<br>
+devices/vector/gdevpdfd.c<br>
+devices/vector/gdevpdfg.c<br>
+devices/vector/gdevpdfx.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 16:24:12 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3dc65600d6d4eb060398f06f148cfe4f07a82439">3dc65600d6d4eb060398f06f148cfe4f07a82439</a>
+<blockquote>
+<p>
+ Bug 702117 Knockout groups containing non-isolated groups<br>
+<br>
+ So this ended up being rather complicated. The first issue was that<br>
+ we were not setting the backdrop properly for non-isolated groups that<br>
+ reside in knockout groups. When that was fixed, it was revealed that we<br>
+ were not doing the recompositing operation for non-isolated knockout groups. This meant<br>
+ that the backdrop was getting applied twice effectively (once in the original<br>
+ fill and then again when the group was popped). The only file that showed<br>
+ this issue was the crazy Altona page with the many overlapping groups. Customer<br>
+ file added to provide a clearer case in the regression tests.<br>
+<br>
+base/gdevp14.c<br>
+base/gxblend.c<br>
+base/gxblend1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 17:09:41 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=416baca7c4bcf0b1794b7b1647250bf09adaee9d">416baca7c4bcf0b1794b7b1647250bf09adaee9d</a>
+<blockquote>
+<p>
+ Fix MEMENTO_FAILAT=115867 - segv in i_unregister_root() after failure in i_register_root().<br>
+<br>
+ In pl_main_delete_instance(), don't call gs_unregister_root() if<br>
+ minst-&gt;device_root is NULL.<br>
+<br>
+ Also in pl_top_create_device(), check return from<br>
+ gs_register_struct_root(). But this doesn't appear to make any difference to<br>
+ the handling of the memento error.<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=115867 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+pcl/pl/plmain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 16:51:56 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4eb54af16c69ef36371291bd43f853865adea1eb">4eb54af16c69ef36371291bd43f853865adea1eb</a>
+<blockquote>
+<p>
+ Fix deep color group compose issue.<br>
+<br>
+ In commit bb7d57e84e9fe I reordered parameters to keep 8/16<br>
+ branches consistent, and missed one case.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 15:27: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=a2276988137021618bb3ca440aba50e126160bcd">a2276988137021618bb3ca440aba50e126160bcd</a>
+<blockquote>
+<p>
+ Remove needless &quot;isolated&quot; parameter from pdf14_mark_rect routines.<br>
+<br>
+ The value was carefully plumbed through (only in the 8bit case) in<br>
+ a recent commit, but was never actually used. Remove it a) because<br>
+ it's pointless passing a variable we don't use, and b) because it's<br>
+ another difference between 8 and 16 bit versions.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 15:21:30 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=9ddcae93fe1629e81d36b17b7fec9de787b411cc">9ddcae93fe1629e81d36b17b7fec9de787b411cc</a>
+<blockquote>
+<p>
+ Fix typing mistake in 16bit transparency.<br>
+<br>
+ When promoting from 8 to 16 bit, shape and src_alpha become<br>
+ uint16_ts rather than bytes.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 15:06:38 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=7de8fe5a49df0f9154fa707a934e39c012c3cc2a">7de8fe5a49df0f9154fa707a934e39c012c3cc2a</a>
+<blockquote>
+<p>
+ Fix more overprint problems with deep color transparency.<br>
+<br>
+ Again, overprint changes to the 8 bit paths had not been<br>
+ pulled across to the 16 bit path.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-19 07:10:40 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2d3f8c01231d52a5595e2727b31b8044188a5af8">2d3f8c01231d52a5595e2727b31b8044188a5af8</a>
+<blockquote>
+<p>
+ Added toolbin/squeeze2text.py, for processing output from MEMENTO_SQUEEZEAT=...<br>
+<br>
+ An alternative to squeeze2html.pl, outputing just summary information.<br>
+<br>
+toolbin/squeeze2text.py<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-20 11:18:11 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=777d79315e0094bef83d241bc0d5683ea6775a55">777d79315e0094bef83d241bc0d5683ea6775a55</a>
+<blockquote>
+<p>
+ Fix for MEMENTO_FAILAT=115802: make gs_gsave_for_save() call gs_gsave() so it can restore after error.<br>
+<br>
+ Previously, zsave() called gs_gsave_for_save() then gs_gsave(), but if<br>
+ gs_gsave() failed we ended up with SEGV in finalise code.<br>
+<br>
+ To allow zsave() to restore things after gs_gsave() failure, we would need to<br>
+ add an include of base/gxgstate.h.<br>
+<br>
+ Instead we remove the call of gs_gsave() from zsave() and append it to<br>
+ gs_gsave_for_save(), where things can be easily restored if it fails.<br>
+<br>
+ [There are no other callers of gs_gsave_for_save().]<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=115802 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+base/gsstate.c<br>
+psi/zvmem.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 09:44:51 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6db4560f1e31bb92321894e0d008d310aa600097">6db4560f1e31bb92321894e0d008d310aa600097</a>
+<blockquote>
+<p>
+ Avoid leaks if we get alloc failure when closing down (found by memento).<br>
+<br>
+ In gs_main_finit(), ignore gs_error_VMerror from interp_reclaim(). Such error<br>
+ ultimately comes from gs_vmreclaim() calling context_state_load(), but the<br>
+ missing info doesn't seem to be required for gs_main_finit() to carry on.<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=147801 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+psi/imain.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 17:40: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=eb726fb4d2597cfcd4986dd9c105cf1ab71d09e3">eb726fb4d2597cfcd4986dd9c105cf1ab71d09e3</a>
+<blockquote>
+<p>
+ Fix image_color_icc_prep to properly align planar buffers.<br>
+<br>
+base/gxicolor.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 10:50: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=e01371e00caa8f5d08ef150a6f594c93ca495be2">e01371e00caa8f5d08ef150a6f594c93ca495be2</a>
+<blockquote>
+<p>
+ Enable CAL for gxicolor halftoning.<br>
+<br>
+ Looks like the calling code was unfinished, and the build<br>
+ changes were not done.<br>
+<br>
+ Also, squash some warnings.<br>
+<br>
+base/gxicolor.c<br>
+base/gximono.c<br>
+base/lib.mak<br>
+devices/gdevtsep.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-17 15:57:47 +0000
+</strong>
+<br>Chris Liddell &lt;chris.liddell@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=c4e7cddc4d053f2850e697696e2498180547961a">c4e7cddc4d053f2850e697696e2498180547961a</a>
+<blockquote>
+<p>
+ Ensure the memory entry in a cloned gstate is correct.<br>
+<br>
+ In theory, we could end up cloning a graphics state with one allocator, then<br>
+ assigning the &quot;memory&quot; entry in the cloned state to that of the state we are<br>
+ cloning.<br>
+<br>
+ In practice the two have (so far) been the same, but that is not guaranteed.<br>
+<br>
+base/gsstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 11:08: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=239e70cd02491bab1cce9092c07c959427358646">239e70cd02491bab1cce9092c07c959427358646</a>
+<blockquote>
+<p>
+ Fix segfault cleaning up after gstate clone failure.<br>
+<br>
+ For me this happens with MEMENTO_FAILAT=112447 and for Julian it happens with<br>
+ MEMENTO_FAILAT=115905.<br>
+<br>
+ Basically, the order of events was that we'd allocate a new gstate, copy the<br>
+ contents of the existing gstate to the new one, then copy the dash pattern<br>
+ (which could fail) and copy the &quot;client_data&quot; (which could and, in this case,<br>
+ did fail). When either of those failed, we'd jump to the error handling and<br>
+ exit with the error.<br>
+<br>
+ The problem is that, by jumping to the &quot;fail&quot; label, we skip over all the code<br>
+ that fixes up the reference counts (and various other things) to account for<br>
+ the newly created gstate.<br>
+<br>
+ This commit reorders things so we allocate the gstate, copy the client data,<br>
+ copy the dash pattern, *then* assign the contents of the old gstate to the new<br>
+ one, and carry on. Thus, by the time the gstate contents are copied, the<br>
+ function cannot fail, and everything is sure to be correctly setup.<br>
+<br>
+ In the event that either the dash pattern or the client data fail to allocate,<br>
+ the new gstate is still filled with NULLs, except for the subset of<br>
+ &quot;gs_gstate_parts&quot; which are allocated and setup correctly so we can safely<br>
+ free the graphics state object before returning the error.<br>
+<br>
+ Also, use NULL for pointer validation instead of 0.<br>
+<br>
+base/gsstate.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 17:43:18 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=db5b51109ddee39b17b2ff2c2ac12f41a70785ef">db5b51109ddee39b17b2ff2c2ac12f41a70785ef</a>
+<blockquote>
+<p>
+ Make sure pattern fills use proper alpha settings<br>
+<br>
+ Fix for regression of fts_28_2804.pdf pdfwrite output rendering<br>
+ with fill-stroke commit. This also fixes the rendering of fts_25_2526.pdf<br>
+ Bug 702033. Required a minor change in the XPS interpreter to make<br>
+ sure that patterns did not have their opacity double applied.<br>
+<br>
+base/gdevp14.c<br>
+xps/xpstile.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-19 17:20:09 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=cddd44e1bfcdaba1c289c3d83645613d136e5e3e">cddd44e1bfcdaba1c289c3d83645613d136e5e3e</a>
+<blockquote>
+<p>
+ Bug 702105: Premature EOF Infinite loop in interpolated imagemask stream.<br>
+<br>
+ Fix supplied by Peter Cherepanov. Many thanks.<br>
+<br>
+base/simscale.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-19 16:58: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=59089ab66b3faaa683bb3aeb0bf856b7aa284f9b">59089ab66b3faaa683bb3aeb0bf856b7aa284f9b</a>
+<blockquote>
+<p>
+ Fix &quot;blue gradients&quot; seen with psdrgb device.<br>
+<br>
+ Since the fill/stroke commit went in, some files have been showing<br>
+ gradients in the wrong colours. For instance this one, spotted in<br>
+ release testing:<br>
+<br>
+ gs -sDEVICE=psdrgb -r72 -dMaxBitmap=2000M -o out%d.psd<br>
+ ../tests_private/comparefiles/Layout.pdf<br>
+<br>
+ Bisecting the fill/stroke branch back, it seems the commit that<br>
+ caused it is the one that stops psdrgb using 'devn' colors.<br>
+<br>
+ This causes gradients to drop to using the color_info.comp_bits and<br>
+ comp_shift information, which the psd devices don't fill in.<br>
+<br>
+ The fix here is to make psd_prn_open call the standard function for<br>
+ setting up these values.<br>
+<br>
+devices/gdevpsd.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 14:48:05 -0800
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=25cd0c72b98f9efc6968254d1e3a2f33ec376369">25cd0c72b98f9efc6968254d1e3a2f33ec376369</a>
+<blockquote>
+<p>
+ Bug701972 -- fix pdfwrite image downscaling bug<br>
+<br>
+ Calculate the bits on the row using the input image width,<br>
+ not the output image width.<br>
+<br>
+ I had to add an extra argument to a few functions to propagate the info<br>
+ down to where it is needed.<br>
+<br>
+ Note obscure case involving calling psdf_setup_image_to_mask_filter()<br>
+ for a Type 4 image and CompatibilityLevel &lt; 1.3. This change just<br>
+ adds the extra input_width arg, which doesn't change whatever it was<br>
+ doing before. If there is a bug lurking here, it seems unlikely<br>
+ anybody cares?<br>
+<br>
+devices/vector/gdevpdfi.c<br>
+devices/vector/gdevpsdf.h<br>
+devices/vector/gdevpsdi.c<br>
+devices/vector/gdevpsds.c<br>
+devices/vector/gdevpsds.h<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 09:22:55 -0800
+</strong>
+<br>Nancy Durgin &lt;nancy.durgin@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e9523603ac713e365702b81c228edcaaac667dc4">e9523603ac713e365702b81c228edcaaac667dc4</a>
+<blockquote>
+<p>
+ Set the BitsPerComponent for alt stream in pdfwrite<br>
+<br>
+ Add this to the image[1] code where it was missing<br>
+<br>
+ This fixes bug where compressed images were correct, but if<br>
+ -dEncodeGrayImages=false was used, then they were truncated.<br>
+<br>
+ This is related to trimmed/rescaled image for Bug701972.<br>
+ See the sample trim-nobug.pdf attached to that bug.<br>
+<br>
+devices/vector/gdevpdfi.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 19:25: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=924f7ea07c7773a3b1510c6206c9a34227e4b39e">924f7ea07c7773a3b1510c6206c9a34227e4b39e</a>
+<blockquote>
+<p>
+ Bug 702131: Fix overprint in additive spaces.<br>
+<br>
+ We should only enter CompatibleOverprint blend mode if we<br>
+ are in an subtractive space. This stops pdf14 trying to honour<br>
+ drawn_comps even in additive spaces.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 14:02:24 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d98b553c829fad94cd4338910468d2b1b6ee64f7">d98b553c829fad94cd4338910468d2b1b6ee64f7</a>
+<blockquote>
+<p>
+ Fix bug 702079: SEGV with clist and PCL caused by wrong color in images.<br>
+<br>
+ The clist_image_plane_data function was called with the dev_color for a band<br>
+ being type &lt;pattern&gt; when the image had type &lt;pure&gt;, but the code was not<br>
+ calling cmd_put_drawing_color to update the bands for the image because uses_color<br>
+ was false. Add rop3_uses_S(pgs0&gt;log_op) as well as (||) rop3_uses_T(pgs-&gt;log_op)<br>
+ when CombineWitColor is true.<br>
+ Note that extra calls to cmd_put_drawing_color before an image are low cost<br>
+ and do nothing if the current device color is already the same.<br>
+<br>
+base/gxclimag.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 09:48:07 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f55464d5c1640075a67a8b50557a48766783e08">4f55464d5c1640075a67a8b50557a48766783e08</a>
+<blockquote>
+<p>
+ Bug 702128 : clist pdf14 overprint state<br>
+<br>
+ This change ensures that gxdso_overprint_active<br>
+ gets the proper state information.<br>
+<br>
+ When the clist writer is active with the pdf14 device, the writer maintains<br>
+ the current overprint state (as the writer has no access to the pdf14 member variables)<br>
+ and must know what to put in the clist.<br>
+<br>
+ When the clist writer is not present (i.e. page mode), the pdf14 device<br>
+ maintains the information.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-18 11:46: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=f1887408860910c19c980f05fd0f8fc93b5f06a1">f1887408860910c19c980f05fd0f8fc93b5f06a1</a>
+<blockquote>
+<p>
+ Bug 702068 continued: Fix smasked images with masks.<br>
+<br>
+ Release testing has shown up another case that needs help.<br>
+<br>
+ gs/bin -sDEVICE=ppmraw -o out.ppm -r300 -dMaxBitmap=1G<br>
+ tests_private/pdf/sumatra/1901_-_tiling_inconsistencies.pdf<br>
+<br>
+ This shows horizontal white lines in the &quot;Next&quot; &quot;Up&quot; &quot;Previous&quot;<br>
+ images at the top of the page.<br>
+<br>
+ Investigation shows this is due to the images having Masks as well<br>
+ as SMasks.<br>
+<br>
+ The Mask image is run to a 1 bit memory device, which means that<br>
+ the gxdso to check if we are in an SMask doesn't work. We work<br>
+ around this by introducing a new flag to gs_pixel_image_common<br>
+ that we can set to indicate that we are within an smask. We set<br>
+ this when we set the masked image up (using the gxdso), and check<br>
+ it when we come to do the gridfitting.<br>
+<br>
+base/gsiparam.h<br>
+base/gxclrast.c<br>
+base/gximage.c<br>
+base/gximage3.c<br>
+base/gxipixel.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-17 19:31: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=51a0be1a6ac3bae2dc1b8bcdd91f58f76b9132c9">51a0be1a6ac3bae2dc1b8bcdd91f58f76b9132c9</a>
+<blockquote>
+<p>
+ Sync deep colour blending with recent changes to 8 bit blending.<br>
+<br>
+ Release testing reveals problems with deep color blending and<br>
+ overprint. This is because changes were made to the 8bit<br>
+ branches of gxblend.c that weren't fully reflected in the<br>
+ 16bit branches.<br>
+<br>
+ Reapply those changes here.<br>
+<br>
+ While we're at it, address some other minor code cleanups,<br>
+ including keeping the ordering of parameters the same between 8<br>
+ and 16 bit to avoid confusion in future.<br>
+<br>
+ The command that showed the inital problem was:<br>
+<br>
+ bin/gswin32c.exe -o out.psd -sDEVICE=psdcmyk16 tests_private/comparefiles/Bug695916.pdf<br>
+<br>
+ where the image of the Earth did not appear.<br>
+<br>
+base/gxblend.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-17 13:27: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=b7faa941d09db8856378e45d4f5c81b5f93e5f90">b7faa941d09db8856378e45d4f5c81b5f93e5f90</a>
+<blockquote>
+<p>
+ Bug 702130: Fix JPEG memory failure problems.<br>
+<br>
+ The SEGV reported by Memento squeezing (which oddly is at 113600<br>
+ for me, rather than Julian's higher number) is caused by jpeglib<br>
+ calling 'mem_term' on something that failed to 'mem_init'.<br>
+<br>
+ The fix is to use gs_memory_chunk_unwrap rather than target/release,<br>
+ and to check whether mem == cmem to see whether that actually did<br>
+ unwrap.<br>
+<br>
+ This runs us into a further problem, where we are freeing the<br>
+ custom memory descriptor using a gc memory pointer, where it was<br>
+ allocated using a non gc one.<br>
+<br>
+ Rather than just changing the free to use the non gc one, we take<br>
+ the opportunity to ensure that ALL the blocks are in non gc memory.<br>
+ JPEGlib will take poorly to its memory being gc'd away, and none<br>
+ of it needs to subject to gc.<br>
+<br>
+ Credit goes largely to Chris for this fix.<br>
+<br>
+base/sjpegc.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 18:44: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=619c0231952c20cc14f0eaf603e0cb01aa937eff">619c0231952c20cc14f0eaf603e0cb01aa937eff</a>
+<blockquote>
+<p>
+ Bug 702124 (continued): Avoid FP errors leading to empty pattern cells.<br>
+<br>
+ The limited accuracy of floats can cause pattern cells to appear to<br>
+ be empty when they are not.<br>
+<br>
+ Avoid adding the (often large) tx and ty components in until after we<br>
+ have calculated the width/heights.<br>
+<br>
+base/gsptype1.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 18:43: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=8edb1b1e7bb84ff4598819fe078eb0ed2c4948d5">8edb1b1e7bb84ff4598819fe078eb0ed2c4948d5</a>
+<blockquote>
+<p>
+ Bug 702124: Avoid VMerror when a pattern cell height is 0.<br>
+<br>
+ We detect buffer_height == 0 and take it to mean that we can't<br>
+ get a large enough buffer for even a single scanline. Actually<br>
+ it can mean that the pattern cell was empty, which gives a<br>
+ spurious error.<br>
+<br>
+base/gxmclip.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-14 17:08:12 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6beaf42d25f3969b6dc3d8e1b1795017708000c5">6beaf42d25f3969b6dc3d8e1b1795017708000c5</a>
+<blockquote>
+<p>
+ Fix segv after memento squeeze in psdf_DCT_filter().<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=117152 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+devices/vector/gdevpsdu.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 14:54:42 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8d052b3de78b8034daed23e668758c76a8d8c478">8d052b3de78b8034daed23e668758c76a8d8c478</a>
+<blockquote>
+<p>
+ Fixed double free after alloc failure in gs_lib_ctx_set_icc_directory*() (found by memento).<br>
+<br>
+ After we've freed p_ctx-&gt;profiledir we need to set it to NULL otherwise if we<br>
+ return an error it will be freed a second time when we close down.<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=101810 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+base/gslibctx.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 11:12:37 +0000
+</strong>
+<br>Julian Smith &lt;jules@op59.net&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=dbde03ca37da96a94f4b7a6f0ba22a47a7bc2cb1">dbde03ca37da96a94f4b7a6f0ba22a47a7bc2cb1</a>
+<blockquote>
+<p>
+ Fixed leak on error in gs_fapi_ufst_init() (found by memento).<br>
+<br>
+ Fixes:<br>
+ MEMENTO_FAILAT=22 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+base/fapiufst.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 19:48:01 +0000
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=08695f8ccebb0d25eb2a5933ecee92281eefc1be">08695f8ccebb0d25eb2a5933ecee92281eefc1be</a>
+<blockquote>
+<p>
+ Bug 702121: PCL performance degradation<br>
+<br>
+ Henry chased the cause down to commit b399f84, an attempt to<br>
+ fix Bug 700624. Looking at that code now, it has a silly typo<br>
+ in it, that was causing it not be triggered in cases when it<br>
+ should have been. Fixed here.<br>
+<br>
+base/gxpcmap.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 11:11:40 -0800
+</strong>
+<br>Robin Watts &lt;Robin.Watts@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e2cdef26db058e84c2cf4dff5f638e669f961b52">e2cdef26db058e84c2cf4dff5f638e669f961b52</a>
+<blockquote>
+<p>
+ Alternative fix for leaks after error in gs_main_init_with_args01()<br>
+<br>
+ When memory squeezing gpdl, Julian found leaks in the gpdl<br>
+ startup of the postscript interpreter when allocations failed<br>
+ in gs_main_init_with_args01().<br>
+<br>
+ Here, we fix the problem by making the psitop.c layer within gpdl<br>
+ call the appropriate shutdown code when we catch the error. This<br>
+ moves gpdl to being consistent with other users of the gs_main<br>
+ layer.<br>
+<br>
+ Memento memory squeezing around the point of failure (event 2035)<br>
+ now shows this to be OK.<br>
+<br>
+ MEMENTO_SQUEEZEAT=2034 ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps<br>
+<br>
+gpdl/psitop.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-13 18:47: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=bbecd13cc34f3dcdcedd726e7de12c988da9794a">bbecd13cc34f3dcdcedd726e7de12c988da9794a</a>
+<blockquote>
+<p>
+ Revert &quot;Fix leaks after error in gs_main_init_with_args01() (found by memento).&quot;<br>
+<br>
+ This reverts commit f35924926cb35f08be5a12ded4a00eb2f42aed3e.<br>
+<br>
+ When memory squeezing gpdl, Julian found leaks in the gpdl<br>
+ startup of the postscript interpreter when allocations failed<br>
+ in gs_main_init_with_args01().<br>
+<br>
+ The initial fix attempted was to make gs_main_init_with_args01()<br>
+ closedown the interpreter on such errors. This worked for the<br>
+ tested cases, but hid problems with non-memory related errors<br>
+ (such as not being able to open a file specified on the command<br>
+ line) when called by gs (rather than gpdl).<br>
+<br>
+ The change attempted resulted in gs_main_finit() being called<br>
+ twice as gs (and other users of the gs_main APIs) expect to have<br>
+ to call gs_main_finit() to shut down after gs_main_init_with_args01()<br>
+ returns an error code.<br>
+<br>
+ The real problem is that gpdl is not doing this in the same way as<br>
+ other callers.<br>
+<br>
+ The gs_main layer has existed for donkeys years, so it's probably<br>
+ best that we just take it as fixed and don't require callers to<br>
+ start changing stuff now.<br>
+<br>
+ Accordingly, I am reverting the attempted fix here, and will<br>
+ try a different fix for it that only affects gpdl shortly.<br>
+<br>
+psi/imainarg.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-11 16:48:24 -0800
+</strong>
+<br>Ray Johnston &lt;ray.johnston@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=68be233f36feb045e442a18c4f4e4d2ced52b197">68be233f36feb045e442a18c4f4e4d2ced52b197</a>
+<blockquote>
+<p>
+ Change to improve memory and speed (Bug 702099)<br>
+<br>
+ As described in the bug, the patch to disable high-level images in<br>
+ pattern-clists when Interpolate is true is no longer needed (hasn't<br>
+ been since 2015), and it causes the memory and performance problems<br>
+ with this type of file.<br>
+<br>
+base/gxclimag.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 15:10:54 -0800
+</strong>
+<br>Michael Vrhel &lt;michael.vrhel@artifex.com&gt;<br>
+<a href="http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=2dea734a6184668511758fe1929a1d3166df85b6">2dea734a6184668511758fe1929a1d3166df85b6</a>
+<blockquote>
+<p>
+ Bug 702114 non-isolated group in knockout group<br>
+<br>
+ Make sure to use the parents backdrop as our backdrop when we<br>
+ push a non-isolated group that resides in a knockout group.<br>
+ Note though that this apparently is not the case if we are<br>
+ constructing a soft mask.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 10:54: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=9af467b71198710bc42509e00b730a716b8e4828">9af467b71198710bc42509e00b730a716b8e4828</a>
+<blockquote>
+<p>
+ Bug 702113 Softmask with transfer function<br>
+<br>
+ In a couple spots we look at the value of the background value<br>
+ of the softmask to decide if we really need the softmask in<br>
+ areas outside the group bounding box. These checks were not<br>
+ considering the impact of the transfer function.<br>
+<br>
+base/gdevp14.c<br>
+<p>
+</blockquote>
+<hr>
+<p><strong>2020-02-12 11:37: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=b6d36e3205a8b065014b3965cb3c8269408309ca">b6d36e3205a8b065014b3965cb3c8269408309ca</a>
+<blockquote>
+<p>
+ Dates etc for 9.51 RC1<br>
+<br>
+ Plus prelim changelog<br>
+<br>
+Makefile.in<br>
+base/gscdefs.h<br>
+doc/DLL.htm<br>
+doc/Deprecated.htm<br>
+doc/Develop.htm<br>
+doc/Devices.htm<br>
+doc/Drivers.htm<br>
+doc/Fonts.htm<br>
+doc/History9.htm<br>
+doc/Install.htm<br>
+doc/Internal.htm<br>
+doc/Language.htm<br>
+doc/Lib.htm<br>
+doc/Make.htm<br>
+doc/News.htm<br>
+doc/Ps-style.htm<br>
+doc/Ps2epsi.htm<br>
+doc/Psfiles.htm<br>
+doc/Readme.htm<br>
+doc/Release.htm<br>
+doc/SavedPages.htm<br>
+doc/Source.htm<br>
+doc/Unix-lpr.htm<br>
+doc/Use.htm<br>
+doc/VectorDevices.htm<br>
+doc/WhatIsGS.htm<br>
+doc/gs-vms.hlp<br>
+doc/sample_downscale_device.htm<br>
+doc/subclass.htm<br>
+doc/thirdparty.htm<br>
+man/dvipdf.1<br>
+man/gs.1<br>
+man/gslp.1<br>
+man/gsnd.1<br>
+man/pdf2dsc.1<br>
+man/pdf2ps.1<br>
+man/pf2afm.1<br>
+man/pfbtopfa.1<br>
+man/printafm.1<br>
+man/ps2ascii.1<br>
+man/ps2epsi.1<br>
+man/ps2pdf.1<br>
+man/ps2pdfwr.1<br>
+man/ps2ps.1<br>
+psi/winint.mak<br>
+<p>
+</blockquote>
+<hr>
+<hr size=20>
+
+
+
<h2><a name="Version9.52"></a>Version 9.52 (2020-03-19)</h2>
<p> Highlights in this release include:
<ul>
@@ -228380,7 +241809,7 @@ Bump the versioning after the 8.71 release.
<hr>
<p>
-<small>Copyright &copy; 2000-2019 Artifex Software, Inc. All rights reserved.</small>
+<small>Copyright &copy; 2000-2020 Artifex Software, Inc. All rights reserved.</small>
<p>
This software is provided AS-IS with no warranty, either express or
@@ -228393,7 +241822,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.52, 19 March 2020
+<small>Ghostscript version 9.53.0, 10 September 2020
<!-- [3.0 end visible trailer] ============================================= -->