summaryrefslogtreecommitdiff
path: root/devices/gdevicov.c
diff options
context:
space:
mode:
Diffstat (limited to 'devices/gdevicov.c')
-rw-r--r--devices/gdevicov.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/devices/gdevicov.c b/devices/gdevicov.c
index 4f4d7f5cd..ad9a903ca 100644
--- a/devices/gdevicov.c
+++ b/devices/gdevicov.c
@@ -37,18 +37,20 @@
static int
cov_write_page(gx_device_printer *pdev, gp_file *file)
{
- int code = 0;
+ int code = 0, ecode = 0;
int raster = gdev_prn_raster(pdev);
int height = pdev->height;
byte *line = gs_alloc_bytes(pdev->memory, raster, "ink coverage plugin buffer");
int y;
uint64_t c_pix = 0, m_pix = 0, y_pix = 0, k_pix = 0, total_pix = 0;
+ if (line == NULL)
+ return gs_error_VMerror;
for (y = 0; y < height; y++) {
byte *row, *end;
- code = gdev_prn_get_bits(pdev, y, line, &row);
- if (code < 0)
+ ecode = gdev_prn_get_bits(pdev, y, line, &row);
+ if (ecode < 0)
break;
end = row + raster;
@@ -90,14 +92,14 @@ cov_write_page(gx_device_printer *pdev, gp_file *file)
}
}
- return 0;
+ return (code < 0) ? ecode : 0;
}
/* cov_write_page2 gave ink coverage values not ratecoverage */
static int cov_write_page_ink(gx_device_printer *pdev, gp_file *file)
{
- int code = 0;
+ int code = 0, ecode = 0;
int raster = gdev_prn_raster(pdev);
int height = pdev->height;
double dc_pix=0;
@@ -109,11 +111,13 @@ static int cov_write_page_ink(gx_device_printer *pdev, gp_file *file)
int y;
uint64_t total_pix = 0;
+ if (line == NULL)
+ return gs_error_VMerror;
for (y = 0; y < height; y++) {
byte *row, *end;
- code = gdev_prn_get_bits(pdev, y, line, &row);
- if (code < 0)
+ ecode = gdev_prn_get_bits(pdev, y, line, &row);
+ if (ecode < 0)
break;
end = row + raster;
@@ -159,7 +163,7 @@ static int cov_write_page_ink(gx_device_printer *pdev, gp_file *file)
}
}
- return 0;
+ return (code < 0) ? ecode : 0;
}
static const gx_device_procs cov_procs =