summaryrefslogtreecommitdiff
path: root/base/gxifast.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/gxifast.c
parent0b3e0befdc87323eb518d6233c5fcdf5e006e6dc (diff)
downloadghostpdl-486f3b4a677180bbef2553114bf13916c76e1884.tar.gz
Bug 697545: Update gx_image_enum_begin to correctly handle error returns.
Diffstat (limited to 'base/gxifast.c')
-rw-r--r--base/gxifast.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/base/gxifast.c b/base/gxifast.c
index 8ab774f6c..e5ea6cdc0 100644
--- a/base/gxifast.c
+++ b/base/gxifast.c
@@ -50,10 +50,10 @@ iclass_proc(gs_image_class_1_simple);
static irender_proc(image_render_skip);
static irender_proc(image_render_simple);
static irender_proc(image_render_landscape);
-irender_proc_t
-gs_image_class_1_simple(gx_image_enum * penum)
+
+int
+gs_image_class_1_simple(gx_image_enum * penum, irender_proc_t *render_fn)
{
- irender_proc_t rproc;
fixed ox = dda_current(penum->dda.pixel0.x);
fixed oy = dda_current(penum->dda.pixel0.y);
@@ -82,12 +82,12 @@ gs_image_class_1_simple(gx_image_enum * penum)
penum->line = gs_alloc_bytes(penum->memory,
penum->line_size, "image line");
if (penum->line == 0) {
- return 0;
+ return gs_error_VMerror;
}
}
if_debug2m('b', penum->memory, "[b]render=simple, unpack=copy; rect.w=%d, dev_width=%ld\n",
penum->rect.w, dev_width);
- rproc = image_render_simple;
+ *render_fn = image_render_simple;
break;
}
case image_landscape:
@@ -110,7 +110,7 @@ gs_image_class_1_simple(gx_image_enum * penum)
penum->line = gs_alloc_bytes(penum->memory,
penum->line_size, "image line");
if (penum->line == 0) {
- return 0;
+ return gs_error_VMerror;
}
#ifdef PACIFY_VALGRIND
memset(penum->line, 0, penum->line_size); /* For the number of scan lined < 8 */
@@ -119,7 +119,7 @@ gs_image_class_1_simple(gx_image_enum * penum)
if_debug3m('b', penum->memory,
"[b]render=landscape, unpack=copy; rect.w=%d, dev_width=%ld, line_size=%ld\n",
penum->rect.w, dev_width, line_size);
- rproc = image_render_landscape;
+ *render_fn = image_render_landscape;
/* Precompute values needed for rasterizing. */
penum->dxy =
float2fixed(penum->matrix.xy +
@@ -158,11 +158,11 @@ gs_image_class_1_simple(gx_image_enum * penum)
* The only other possible in-range value is v0 = 0, v1 = 1.
* The image is completely transparent!
*/
- rproc = image_render_skip;
+ *render_fn = image_render_skip;
}
penum->map[0].decoding = sd_none;
}
- return rproc;
+ return 0;
}
/* ------ Rendering procedures ------ */