[gthumb] jpeg loader: call alloc_sarray before jpeg_start_decompress



commit b35be8c96a8b97d5cc7d50cd2959c0acdf677ab3
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Fri Jun 28 16:49:48 2013 +0200

    jpeg loader: call alloc_sarray before jpeg_start_decompress
    
    to avoid possible out-of-memory errors.

 extensions/cairo_io/cairo-image-surface-jpeg.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
---
diff --git a/extensions/cairo_io/cairo-image-surface-jpeg.c b/extensions/cairo_io/cairo-image-surface-jpeg.c
index 616ef92..b8ee828 100644
--- a/extensions/cairo_io/cairo-image-surface-jpeg.c
+++ b/extensions/cairo_io/cairo-image-surface-jpeg.c
@@ -221,10 +221,13 @@ _cairo_image_surface_create_from_jpeg (GInputStream  *istream,
 
                if (srcinfo.scale_denom == 0)
                        srcinfo.scale_denom = srcinfo.scale_num;
-
-               jpeg_calc_output_dimensions (&srcinfo);
        }
 
+       jpeg_calc_output_dimensions (&srcinfo);
+
+       buffer_stride = srcinfo.output_width * srcinfo.output_components;
+       buffer = (*srcinfo.mem->alloc_sarray) ((j_common_ptr) &srcinfo, JPOOL_IMAGE, buffer_stride, 
srcinfo.rec_outbuf_height);
+
        jpeg_start_decompress (&srcinfo);
 
        orientation = _jpeg_exif_orientation (in_buffer, in_buffer_size);
@@ -257,9 +260,6 @@ _cairo_image_surface_create_from_jpeg (GInputStream  *istream,
 
        metadata = _cairo_image_surface_get_metadata (surface);
        metadata->has_alpha = FALSE;
-
-       buffer_stride = srcinfo.output_width * srcinfo.output_components;
-       buffer = (*srcinfo.mem->alloc_sarray) ((j_common_ptr) &srcinfo, JPOOL_IMAGE, buffer_stride, 
srcinfo.rec_outbuf_height);
        surface_row = _cairo_image_surface_flush_and_get_data (surface) + line_start;
 
        switch (srcinfo.out_color_space) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]