summaryrefslogtreecommitdiff
path: root/base/gdevprn.c
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2022-02-16 18:50:56 +0000
committerRobin Watts <Robin.Watts@artifex.com>2022-02-17 11:26:05 +0000
commit5ded6a37e4342b226bbf00338ee43836a2d18abd (patch)
tree259ef0c0a827858cd9090358d67da60b711d800b /base/gdevprn.c
parent36a8420ecaf3acff28658e6826401d81fa4f36fd (diff)
downloadghostpdl-5ded6a37e4342b226bbf00338ee43836a2d18abd.tar.gz
Fix some coverity issues.
Diffstat (limited to 'base/gdevprn.c')
-rw-r--r--base/gdevprn.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/base/gdevprn.c b/base/gdevprn.c
index a78a28cbf..296e97340 100644
--- a/base/gdevprn.c
+++ b/base/gdevprn.c
@@ -1194,11 +1194,18 @@ gx_render_plane_init(gx_render_plane_t *render_plane, const gx_device *dev,
int num_planes = dev->color_info.num_components;
int plane_depth = dev->color_info.depth / num_planes;
- if (index < 0 || index >= num_planes)
+ if (index < -1 || index >= num_planes)
return_error(gs_error_rangecheck);
render_plane->index = index;
- render_plane->depth = plane_depth;
- render_plane->shift = plane_depth * (num_planes - 1 - index);
+ if (index == -1) {
+ /* No plane, chunky results required. */
+ render_plane->depth = dev->color_info.depth;
+ render_plane->shift = 0;
+ } else {
+ /* A single plane */
+ render_plane->depth = plane_depth;
+ render_plane->shift = plane_depth * (num_planes - 1 - index);
+ }
return 0;
}