cinfo.err = jpeg_std_error (&jerr.pub);
jerr.pub.error_exit = fatal_error_handler;
jerr.pub.output_message = output_message_handler;
-
jerr.error = error;
if (sigsetjmp (jerr.setjmp_buffer, 1)) {
context->src_initialized = FALSE;
context->in_output = FALSE;
+ /* From jpeglib.h: "NB: you must set up the error-manager
+ * BEFORE calling jpeg_create_xxx". */
+ context->cinfo.err = jpeg_std_error (&context->jerr.pub);
+ context->jerr.pub.error_exit = fatal_error_handler;
+ context->jerr.pub.output_message = output_message_handler;
+ context->jerr.error = error;
+
/* create libjpeg structures */
jpeg_create_decompress (&context->cinfo);
return NULL;
}
memset (context->cinfo.src, 0, sizeof (my_source_mgr));
-
- src = (my_src_ptr) context->cinfo.src;
- context->cinfo.err = jpeg_std_error (&context->jerr.pub);
- context->jerr.pub.error_exit = fatal_error_handler;
- context->jerr.pub.output_message = output_message_handler;
- context->jerr.error = error;
-
src = (my_src_ptr) context->cinfo.src;
src->pub.init_source = init_source;
src->pub.fill_input_buffer = fill_input_buffer;
}
}
+ cinfo->scale_num = 1;
for (cinfo->scale_denom = 2; cinfo->scale_denom <= 8; cinfo->scale_denom *= 2) {
jpeg_calc_output_dimensions (cinfo);
if (cinfo->output_width < width || cinfo->output_height < height) {
ToFunctionDestinationManager *destmgr;
destmgr = (ToFunctionDestinationManager*) cinfo->dest;
- if (!destmgr->save_func (destmgr->buffer,
+ if (!destmgr->save_func ((gchar *)destmgr->buffer,
length,
destmgr->error,
destmgr->user_data)) {
}
/* set up error handling */
+ cinfo.err = jpeg_std_error (&(jerr.pub));
jerr.pub.error_exit = fatal_error_handler;
jerr.pub.output_message = output_message_handler;
jerr.error = error;
- cinfo.err = jpeg_std_error (&(jerr.pub));
if (sigsetjmp (jerr.setjmp_buffer, 1)) {
jpeg_destroy_compress (&cinfo);
g_free (buf);