| X-Git-Url: http://git.ghostscript.com/?p=ghostpdl.git;a=blobdiff_plain;f=devices%2Fvector%2Fgdevpx.c;h=5d2d0edf53d6a9d27fbf3d63b8a36e766291d93d;hp=825e6b4c5085bd88df3b21f5e0273e941994e86d;hb=68c7275d4a580dca6c0ed3798f3717eea3513403;hpb=13a560a4d13d51e4dd9f7dd48b27a6ebe681f877 |
| |
| diff --git a/devices/vector/gdevpx.c b/devices/vector/gdevpx.c |
| index 825e6b4..5d2d0ed 100644 |
| --- a/devices/vector/gdevpx.c |
| +++ b/devices/vector/gdevpx.c |
| @@ -714,6 +714,7 @@ pclxl_write_image_data_RLE(gx_device_pclxl * xdev, const byte * base, |
| uint num_bytes = ROUND_UP(width_bytes, 4) * height; |
| bool compress = num_bytes >= 8; |
| int i; |
| + int code; |
| |
| /* cannot handle data_bit not multiple of 8, but we don't invoke this routine that way */ |
| int offset = data_bit >> 3; |
| @@ -752,19 +753,20 @@ pclxl_write_image_data_RLE(gx_device_pclxl * xdev, const byte * base, |
| r.ptr = data + i * raster - 1; |
| r.limit = r.ptr + width_bytes; |
| if ((*s_RLE_template.process) |
| - ((stream_state *) & rlstate, &r, &w, true) != 0 || |
| + ((stream_state *) & rlstate, &r, &w, false) != 0 || |
| r.ptr != r.limit) |
| goto ncfree; |
| r.ptr = (const byte *)"\000\000\000\000\000"; |
| r.limit = r.ptr + (-(int)width_bytes & 3); |
| if ((*s_RLE_template.process) |
| - ((stream_state *) & rlstate, &r, &w, true) != 0 || |
| + ((stream_state *) & rlstate, &r, &w, false) != 0 || |
| r.ptr != r.limit) |
| goto ncfree; |
| } |
| r.ptr = r.limit; |
| - if ((*s_RLE_template.process) |
| - ((stream_state *) & rlstate, &r, &w, true) != 0) |
| + code = (*s_RLE_template.process) |
| + ((stream_state *) & rlstate, &r, &w, true); |
| + if (code != EOFC && code != 0) |
| goto ncfree; |
| { |
| uint count = w.ptr + 1 - buf; |