ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CV/CV.xs
(Generate patch)

Comparing CV/CV.xs (file contents):
Revision 1.56 by root, Wed Dec 27 17:48:16 2017 UTC vs.
Revision 1.57 by root, Mon Jul 30 22:55:46 2018 UTC

213{ 213{
214} 214}
215 215
216static boolean cv_ms_fill (j_decompress_ptr cinfo) 216static boolean cv_ms_fill (j_decompress_ptr cinfo)
217{ 217{
218 ERREXIT (cinfo, JERR_INPUT_EMPTY); 218 // unexpected EOF, warn and generate fake EOI marker
219
220 WARNMS (cinfo, JWRN_JPEG_EOF);
221
222 struct jpeg_source_mgr *src = (struct jpeg_source_mgr *)cinfo->src;
223
224 static const JOCTET eoi[] = { 0xFF, JPEG_EOI };
225
226 src->next_input_byte = eoi;
227 src->bytes_in_buffer = sizeof (eoi);
219 228
220 return TRUE; 229 return TRUE;
221} 230}
222 231
223static void cv_ms_skip (j_decompress_ptr cinfo, long num_bytes) 232static void cv_ms_skip (j_decompress_ptr cinfo, long num_bytes)
224{ 233{
225 if (num_bytes > 0)
226 {
227 struct jpeg_source_mgr *src = (struct jpeg_source_mgr *)cinfo->src; 234 struct jpeg_source_mgr *src = (struct jpeg_source_mgr *)cinfo->src;
228 235
229 src->next_input_byte += num_bytes; 236 src->next_input_byte += num_bytes;
230 src->bytes_in_buffer -= num_bytes; 237 src->bytes_in_buffer -= num_bytes;
231 }
232} 238}
233 239
234static void cv_jpeg_mem_src (j_decompress_ptr cinfo, void *buf, size_t buflen) 240static void cv_jpeg_mem_src (j_decompress_ptr cinfo, void *buf, size_t buflen)
235{ 241{
236 struct jpeg_source_mgr *src; 242 struct jpeg_source_mgr *src;
521 527
522 perlinterp_acquire (); 528 perlinterp_acquire ();
523 XSRETURN_UNDEF; 529 XSRETURN_UNDEF;
524 } 530 }
525 531
532 if (!data_len)
533 longjmp (jerr.setjmp_buffer, 4);
534
526 jpeg_create_decompress (&cinfo); 535 jpeg_create_decompress (&cinfo);
527 cv_jpeg_mem_src (&cinfo, data, data_len); 536 cv_jpeg_mem_src (&cinfo, data, data_len);
528 537
529 jpeg_read_header (&cinfo, TRUE); 538 jpeg_read_header (&cinfo, TRUE);
530 539

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines