evas: Fix BMP load with region set and scale down 51/87051/2
authorJean-Philippe Andre <jp.andre@samsung.com>
Wed, 17 Aug 2016 08:21:33 +0000 (17:21 +0900)
committerJIIN MOON <jiin.moon@samsung.com>
Mon, 12 Sep 2016 07:44:22 +0000 (00:44 -0700)
This fixes usage of photocam on large BMP images.
Follows previous commits by @jiin.moon.

Change-Id: I34cb2801518e582f24b98a2a4da397b6d629e757

src/modules/evas/image_loaders/bmp/evas_image_load_bmp.c

index 2b8fc26..93f4d59 100644 (file)
@@ -499,6 +499,7 @@ evas_image_load_file_data_bmp(void *loader_data,
    if (!_evas_image_load_file_header(map, fsize, &position, &image_size, &header, error))
      goto close_file;
 
+   *error = EVAS_LOAD_ERROR_GENERIC;
    if (header.height < 0)
      {
         header.height = -header.height;
@@ -511,7 +512,7 @@ evas_image_load_file_data_bmp(void *loader_data,
           *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
         else
           *error = EVAS_LOAD_ERROR_GENERIC;
-       goto close_file;
+        goto close_file;
      }
    image_w = region_w = header.width;
    image_h = region_h = header.height;
@@ -553,7 +554,7 @@ evas_image_load_file_data_bmp(void *loader_data,
    if ((header.width != (int)prop->w) || (header.height != (int)prop->h))
      {
        *error = EVAS_LOAD_ERROR_GENERIC;
-       goto close_file;
+        goto close_file;
      }
 
    row_size = ceil((double)(image_w * header.bit_count) / 32) * 4;
@@ -564,6 +565,9 @@ evas_image_load_file_data_bmp(void *loader_data,
    if (image_size > row_size * header.height)
      image_size = row_size * header.height;
 
+   if (region_set)
+     read_line = region_y;
+
    if (header.bit_count < 16)
      {
         unsigned int i;