QJpegHandler: err should be set before jpeg_create_decompress()
authorElvis Lee <kwangwoong.lee@lge.com>
Tue, 20 Nov 2012 00:11:35 +0000 (09:11 +0900)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 21 Nov 2012 04:21:57 +0000 (05:21 +0100)
If ERREXIT2 is called in jpeg_create_decompress(), SIGSEGV occurs with
no error message. ERREXIT2 macro uses jpeg_compress_struct.err to handle
error case.

Change-Id: I8517a4d6f6e6aa4c1c59cd1aaea435554cca7ac3
Reviewed-by: Jørgen Lind <jorgen.lind@gmail.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
src/gui/image/qjpeghandler.cpp

index 286904a..c4e934a 100644 (file)
@@ -791,12 +791,13 @@ bool QJpegHandlerPrivate::readJpegHeader(QIODevice *device)
         state = Error;
         iod_src = new my_jpeg_source_mgr(device);
 
-        jpeg_create_decompress(&info);
-        info.src = iod_src;
         info.err = jpeg_std_error(&err);
         err.error_exit = my_error_exit;
         err.output_message = my_output_message;
 
+        jpeg_create_decompress(&info);
+        info.src = iod_src;
+
         if (!setjmp(err.setjmp_buffer)) {
             jpeg_save_markers(&info, JPEG_COM, 0xFFFF);