summaryrefslogtreecommitdiff
path: root/pcl
diff options
context:
space:
mode:
authorJulian Smith <julian.smith@artifex.com>2022-01-17 14:55:20 +0000
committerJulian Smith <julian.smith@artifex.com>2022-01-17 16:15:35 +0000
commit7a92e712874a44fe77bfe220ea695391661a4988 (patch)
tree08afff51d6b73fdb1486ba30f6e4efecf8711f90 /pcl
parentd2a2fed728cbb10346b4e735b4fc783988ef4be4 (diff)
downloadghostpdl-7a92e712874a44fe77bfe220ea695391661a4988.tar.gz
pcl/pcl/: fix leak of pcs->pwhite_cs.
E.g. avoids Memento leak in: ./ghostpdl/mem-extract-bin/gpcl6 -dNOPAUSE -dBATCH -sDEVICE=ppmraw -o gpcl6.out ghostpdl/pcl/examples/fills.pcl Also added added comments to encourage frgrnd_do_reset() and pcl_free_default_objects() to be kept in step with each other.
Diffstat (limited to 'pcl')
-rw-r--r--pcl/pcl/pcfrgrnd.c4
-rw-r--r--pcl/pcl/pcpalet.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/pcl/pcl/pcfrgrnd.c b/pcl/pcl/pcfrgrnd.c
index 4a21b039b..673504fdb 100644
--- a/pcl/pcl/pcfrgrnd.c
+++ b/pcl/pcl/pcfrgrnd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2021 Artifex Software, Inc.
+/* Copyright (C) 2001-2022 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -201,6 +201,8 @@ static int
frgrnd_do_reset(pcl_state_t * pcs, pcl_reset_type_t type)
{
if (type & (pcl_reset_permanent)) {
+ /* pcl_free_default_objects() makes similar calls; probably need to
+ keep synced. */
rc_decrement(pcs->pfrgrnd, "foreground reset pfrgrnd");
rc_decrement(pcs->pdflt_frgrnd, "foreground reset pdflt_frgrnd");
rc_decrement(pcs->pwhite_cs, "foreground reset p_white_cs");
diff --git a/pcl/pcl/pcpalet.c b/pcl/pcl/pcpalet.c
index 554e2851f..90a46f933 100644
--- a/pcl/pcl/pcpalet.c
+++ b/pcl/pcl/pcpalet.c
@@ -70,8 +70,11 @@ pcl_free_default_objects(gs_memory_t * mem, pcl_state_t * pcs)
gs_free_object(mem, ppalette, "free_default_palette ppalette free");
pcs->pdflt_palette = 0;
}
+ /* We make similar calls here to frgrnd_do_reset(); probably need to keep
+ synced. */
rc_decrement(pcs->pfrgrnd, "free foreground");
rc_decrement(pcs->pdflt_frgrnd, "free default foreground");
+ rc_decrement(pcs->pwhite_cs, "foreground reset p_white_cs");
/* what on earth is this? */
rc_decrement(pcs->pdflt_ht, "free_default_palette pdflt_ht release");
rc_decrement(pcs->pdflt_ht, "free_default_palette pdflt_ht release");