summaryrefslogtreecommitdiff
path: root/base/gxicolor.c
diff options
context:
space:
mode:
authorShailesh Mistry <shailesh.mistry@hotmail.co.uk>2018-11-18 14:45:00 +0000
committerShailesh Mistry <shailesh.mistry@hotmail.co.uk>2019-01-02 21:22:20 +0000
commit486f3b4a677180bbef2553114bf13916c76e1884 (patch)
treece7f79890e6f713e867c910b3906856572d51fc0 /base/gxicolor.c
parent0b3e0befdc87323eb518d6233c5fcdf5e006e6dc (diff)
downloadghostpdl-486f3b4a677180bbef2553114bf13916c76e1884.tar.gz
Bug 697545: Update gx_image_enum_begin to correctly handle error returns.
Diffstat (limited to 'base/gxicolor.c')
-rw-r--r--base/gxicolor.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/base/gxicolor.c b/base/gxicolor.c
index b35dfb62f..bfc6025c6 100644
--- a/base/gxicolor.c
+++ b/base/gxicolor.c
@@ -63,11 +63,11 @@ static irender_proc(image_render_color_thresh);
static int image_skip_color_icc_tpr(gx_image_enum *penum, gx_device *dev);
-irender_proc_t
-gs_image_class_4_color(gx_image_enum * penum)
+int
+gs_image_class_4_color(gx_image_enum * penum, irender_proc_t *render_fn)
{
bool std_cmap_procs;
- int code;
+ int code = 0;
#if USE_FAST_HT_CODE
bool use_fast_thresh = true;
#else
@@ -119,13 +119,14 @@ gs_image_class_4_color(gx_image_enum * penum)
if ( (gs_color_space_get_index(penum->pcs) == gs_color_space_index_DeviceN &&
penum->pcs->cmm_icc_profile_data == NULL) || penum->use_mask_color ||
!std_cmap_procs) {
- return &image_render_color_DeviceN;
+ *render_fn = &image_render_color_DeviceN;
+ return code;
}
/* Set up the link now */
code = dev_proc(penum->dev, get_profile)(penum->dev, &dev_profile);
if (code < 0)
- return NULL; /* This function does not return errors, best we can do is say 'we can't handle this' */
+ return code;
des_num_comp = gsicc_get_device_profile_comps(dev_profile);
bpc = penum->dev->color_info.depth / des_num_comp; /* bits per component */
@@ -193,7 +194,8 @@ gs_image_class_4_color(gx_image_enum * penum)
if (code == 0) {
/* NB: transfer function is pickled into the threshold arrray */
penum->icc_setup.has_transfer = false;
- return &image_render_color_thresh;
+ *render_fn = &image_render_color_thresh;
+ return code;
}
}
}
@@ -220,10 +222,11 @@ gs_image_class_4_color(gx_image_enum * penum)
if (code >= 0) {
penum->tpr_state = data.state;
penum->skip_next_line = image_skip_color_icc_tpr;
- return &image_render_color_icc_tpr;
+ *render_fn = &image_render_color_icc_tpr;
+ return code;
}
}
- return NULL;
+ return code;
}
/* ------ Rendering procedures ------ */