341 return;
342 }
343 if (src->remaining_skip) {
344 src->pub.skip_input_data(cinfo, 0);
345 }
346 /* Save the data currently in the buffer */
347 offset = src->pub.bytes_in_buffer;
348 if (src->pub.next_input_byte > src->inbuf) {
349 memmove(src->inbuf, src->pub.next_input_byte, offset);
350 }
351 RELEASE_ARRAYS(env, src);
352 buflen = (*env)->GetArrayLength(env, src->hInputBuffer) - offset;
353 if (buflen <= 0) {
354 if (!GET_ARRAYS(env, src)) {
355 cinfo->err->error_exit((struct jpeg_common_struct *) cinfo);
356 }
357 return;
358 }
359 ret = (*env)->CallIntMethod(env, src->hInputStream, InputStream_readID,
360 src->hInputBuffer, offset, buflen);
361 if ((ret > 0) && ((unsigned int)ret > buflen)) ret = buflen;
362 if ((*env)->ExceptionOccurred(env) || !GET_ARRAYS(env, src)) {
363 cinfo->err->error_exit((struct jpeg_common_struct *) cinfo);
364 }
365 if (ret <= 0) {
366 /* Silently accept truncated JPEG files */
367 WARNMS(cinfo, JWRN_JPEG_EOF);
368 src->inbuf[offset] = (JOCTET) 0xFF;
369 src->inbuf[offset + 1] = (JOCTET) JPEG_EOI;
370 ret = 2;
371 }
372
373 src->pub.next_input_byte = src->inbuf;
374 src->pub.bytes_in_buffer = ret + offset;
375
376 return;
377 }
378
379 /*
380 * Skip num_bytes worth of data. The buffer pointer and count should
381 * be advanced over num_bytes input bytes, refilling the buffer as
|
341 return;
342 }
343 if (src->remaining_skip) {
344 src->pub.skip_input_data(cinfo, 0);
345 }
346 /* Save the data currently in the buffer */
347 offset = src->pub.bytes_in_buffer;
348 if (src->pub.next_input_byte > src->inbuf) {
349 memmove(src->inbuf, src->pub.next_input_byte, offset);
350 }
351 RELEASE_ARRAYS(env, src);
352 buflen = (*env)->GetArrayLength(env, src->hInputBuffer) - offset;
353 if (buflen <= 0) {
354 if (!GET_ARRAYS(env, src)) {
355 cinfo->err->error_exit((struct jpeg_common_struct *) cinfo);
356 }
357 return;
358 }
359 ret = (*env)->CallIntMethod(env, src->hInputStream, InputStream_readID,
360 src->hInputBuffer, offset, buflen);
361 if ((ret > 0) && ((unsigned int)ret > buflen)) ret = (int)buflen;
362 if ((*env)->ExceptionOccurred(env) || !GET_ARRAYS(env, src)) {
363 cinfo->err->error_exit((struct jpeg_common_struct *) cinfo);
364 }
365 if (ret <= 0) {
366 /* Silently accept truncated JPEG files */
367 WARNMS(cinfo, JWRN_JPEG_EOF);
368 src->inbuf[offset] = (JOCTET) 0xFF;
369 src->inbuf[offset + 1] = (JOCTET) JPEG_EOI;
370 ret = 2;
371 }
372
373 src->pub.next_input_byte = src->inbuf;
374 src->pub.bytes_in_buffer = ret + offset;
375
376 return;
377 }
378
379 /*
380 * Skip num_bytes worth of data. The buffer pointer and count should
381 * be advanced over num_bytes input bytes, refilling the buffer as
|