summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/gximage1.c5
-rw-r--r--base/gximage4.c4
-rw-r--r--base/gxipixel.c2
3 files changed, 10 insertions, 1 deletions
diff --git a/base/gximage1.c b/base/gximage1.c
index a1ee9e2c9..a773944c8 100644
--- a/base/gximage1.c
+++ b/base/gximage1.c
@@ -85,7 +85,6 @@ gx_begin_image1(gx_device * dev,
if (code < 0)
return code;
- memset(penum, 0, sizeof(gx_image_enum)); /* in case of failure, no dangling pointers */
penum->alpha = pim->Alpha;
penum->use_mask_color = false;
penum->image_parent_type = pim->image_parent_type;
@@ -96,6 +95,10 @@ gx_begin_image1(gx_device * dev,
penum);
if (code >= 0)
*pinfo = (gx_image_enum_common_t *)penum;
+ else {
+ gs_free_object(mem, penum, "gx_begin_image1");
+ *pinfo = NULL;
+ }
return code;
}
diff --git a/base/gximage4.c b/base/gximage4.c
index 8a65e17e7..422cd06f7 100644
--- a/base/gximage4.c
+++ b/base/gximage4.c
@@ -108,6 +108,10 @@ gx_begin_image4(gx_device * dev,
penum);
if (code >= 0)
*pinfo = (gx_image_enum_common_t *)penum;
+ else {
+ gs_free_object(mem, penum, "gx_begin_image4");
+ *pinfo = NULL;
+ }
return code;
}
diff --git a/base/gxipixel.c b/base/gxipixel.c
index 6f27ba650..c41d3b885 100644
--- a/base/gxipixel.c
+++ b/base/gxipixel.c
@@ -174,10 +174,12 @@ gx_image_enum_alloc(const gs_image_common_t * pic,
)
return_error(gs_error_rangecheck);
}
+ *ppenum = NULL; /* in case alloc fails and caller doesn't check code */
penum = gs_alloc_struct(mem, gx_image_enum, &st_gx_image_enum,
"gx_default_begin_image");
if (penum == 0)
return_error(gs_error_VMerror);
+ memset(penum, 0, sizeof(gx_image_enum)); /* in case of failure, no dangling pointers */
if (prect) {
penum->rect.x = prect->p.x;
penum->rect.y = prect->p.y;