diff options
author | Shailesh Mistry <shailesh.mistry@hotmail.co.uk> | 2018-11-18 14:45:00 +0000 |
---|---|---|
committer | Shailesh Mistry <shailesh.mistry@hotmail.co.uk> | 2019-01-02 21:22:20 +0000 |
commit | 486f3b4a677180bbef2553114bf13916c76e1884 (patch) | |
tree | ce7f79890e6f713e867c910b3906856572d51fc0 /base/gxicolor.c | |
parent | 0b3e0befdc87323eb518d6233c5fcdf5e006e6dc (diff) | |
download | ghostpdl-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.c | 19 |
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 ------ */ |