fix bug in jpeg saver.

it override error handler before creation.
modify override error hanler after creation


SVN revision: 74153
This commit is contained in:
Jiyoun Park 2012-07-19 03:04:47 +00:00
parent e7f2bdd37a
commit d34502b33f
2 changed files with 7 additions and 2 deletions

View File

@ -897,3 +897,7 @@
never have done this. This broke the general logic of size never have done this. This broke the general logic of size
hint handling. hint handling.
2012-07-19 Jiyoun Park(jypark)
* Fix jpeg save bug related with error handler

View File

@ -51,8 +51,8 @@ _JPEGErrorHandler2(j_common_ptr cinfo __UNUSED__, int msg_level __UNUSED__)
static int static int
save_image_jpeg(RGBA_Image *im, const char *file, int quality) save_image_jpeg(RGBA_Image *im, const char *file, int quality)
{ {
struct _JPEG_error_mgr jerr;
struct jpeg_compress_struct cinfo; struct jpeg_compress_struct cinfo;
struct _JPEG_error_mgr jerr;
FILE *f; FILE *f;
DATA8 *buf; DATA8 *buf;
DATA32 *ptr; DATA32 *ptr;
@ -68,10 +68,11 @@ save_image_jpeg(RGBA_Image *im, const char *file, int quality)
{ {
return 0; return 0;
} }
memset(&cinfo, 0, sizeof(cinfo));
cinfo.err = jpeg_std_error(&(jerr.pub));
jerr.pub.error_exit = _JPEGFatalErrorHandler; jerr.pub.error_exit = _JPEGFatalErrorHandler;
jerr.pub.emit_message = _JPEGErrorHandler2; jerr.pub.emit_message = _JPEGErrorHandler2;
jerr.pub.output_message = _JPEGErrorHandler; jerr.pub.output_message = _JPEGErrorHandler;
cinfo.err = jpeg_std_error(&(jerr.pub));
if (sigsetjmp(jerr.setjmp_buffer, 1)) if (sigsetjmp(jerr.setjmp_buffer, 1))
{ {
jpeg_destroy_compress(&cinfo); jpeg_destroy_compress(&cinfo);