From a44d0ce727f2095fbbedb8bf6b1e062fca3c8f01 Mon Sep 17 00:00:00 2001 From: Shailesh Mistry Date: Fri, 27 Sep 2019 11:16:23 +0100 Subject: Bug 697545 : Prevent memory leaks in gx_cpath_assign_preserve. Update functionality to propagate error codes correctly and release path segments. Error created using :- MEMENTO_FAILAT=15840 ./membin/gpcl6 -sDEVICE=pbmraw -o /dev/null ./tests_private/pcl/pcl5cfts/fts.1552 --- base/gxcpath.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'base/gxcpath.c') diff --git a/base/gxcpath.c b/base/gxcpath.c index ecdfe0959..4c3d34781 100644 --- a/base/gxcpath.c +++ b/base/gxcpath.c @@ -325,8 +325,10 @@ gx_cpath_assign_preserve(gx_clip_path * pcpto, gx_clip_path * pcpfrom) int code = cpath_alloc_list(&tolist, tolist->rc.memory, "gx_cpath_assign"); - if (code < 0) + if (code < 0) { + rc_decrement(pcpto->path.segments, "gx_path_assign"); return code; + } rc_decrement(pcpto->rect_list, "gx_cpath_assign"); } else { /* Use pcpto's list object. */ @@ -354,7 +356,7 @@ gx_cpath_assign_free(gx_clip_path * pcpto, gx_clip_path * pcpfrom) int code = gx_cpath_assign_preserve(pcpto, pcpfrom); if (code < 0) - return 0; + return code; gx_cpath_free(pcpfrom, "gx_cpath_assign_free"); return 0; } -- cgit v1.2.1