diff options
author | Julian Smith <julian.smith@artifex.com> | 2022-01-17 14:55:20 +0000 |
---|---|---|
committer | Julian Smith <julian.smith@artifex.com> | 2022-01-17 16:15:35 +0000 |
commit | 7a92e712874a44fe77bfe220ea695391661a4988 (patch) | |
tree | 08afff51d6b73fdb1486ba30f6e4efecf8711f90 /pcl | |
parent | d2a2fed728cbb10346b4e735b4fc783988ef4be4 (diff) | |
download | ghostpdl-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.c | 4 | ||||
-rw-r--r-- | pcl/pcl/pcpalet.c | 3 |
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"); |