summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/gdevlx7.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/contrib/gdevlx7.c b/contrib/gdevlx7.c
index 9f0f127b5..37f9697fb 100644
--- a/contrib/gdevlx7.c
+++ b/contrib/gdevlx7.c
@@ -581,6 +581,7 @@ lxmgen_print_page(gx_device_printer *pdev, gp_file *prn_stream)
int lr_shift=((lxm_device*)pdev)->headSeparation;
byte *obp[LX7_BSW_H]; /* pointers to buffer lines */
int bufHeight;
+ int code = 0;
/* initiate vres mapping variable */
vres=LXR_600; /* default vertical resolution */
@@ -689,19 +690,24 @@ lxmgen_print_page(gx_device_printer *pdev, gp_file *prn_stream)
int c1200; /* testing empty line for 1200dpi... */
/* copy one line & test for all zeroes */
- gdev_prn_get_bits(pdev, pheight-prest, /* current line No. */
+ code = gdev_prn_get_bits(pdev, pheight-prest, /* current line No. */
pbuf, /* our buffer if needed */
&ppbuf); /* returns pointer to scanline
* either our buffer or
* gs internal data buffer
*/
+ if (code < 0)
+ goto error;
+
if (vres==LXR_1200 && (pheight-prest+LXH_DSKIP1<pheight))
{
- gdev_prn_get_bits(pdev, pheight-prest+LXH_DSKIP1,
+ code = gdev_prn_get_bits(pdev, pheight-prest+LXH_DSKIP1,
/* current line No. */
pbuf+bwidth, /* our buffer if needed */
&ppbuf2);
c1200=LX_LINE_EMPTY(ppbuf2,bwidth);
+ if (code < 0)
+ goto error;
}
else
c1200=1;
@@ -791,13 +797,14 @@ lxmgen_print_page(gx_device_printer *pdev, gp_file *prn_stream)
/* eject page */
lex_eject(prn_stream);
+error:
gs_free(pdev->memory->non_gc_memory, (char*)pbuf,rpbufsize, 1, "lxmgen_print_page(pbuf)");
gs_free(pdev->memory->non_gc_memory, (char*)outbuf,OUT_BUF_SIZE, 1, "lxmgen_print_page(outbuf)");
#ifdef DEBUG
dprintf1("[%s] print_page() end\n",pdev->dname);
#endif
- return 0;
+ return code;
}
static int