more_option: fix to not make memory leak accepted/tizen/unified/20200602.133222 submit/tizen/20200531.231702
authorWooHyun Jung <wh0705.jung@samsung.com>
Wed, 20 May 2020 10:38:39 +0000 (19:38 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Sun, 31 May 2020 22:38:06 +0000 (07:38 +0900)
Change-Id: Ib992df54a0dd4f0c4e0037a026d76c986820cd3c

src/wearable/efl_extension_more_option.c

index 54e337809913a42301c9e383a9ef4c3a576b46e0..850e3dd927c13020a48b8574beaa4859aca1fd76 100644 (file)
@@ -953,6 +953,7 @@ _screen_shot_take(Eext_More_Option_Data *data)
    Eina_Bool freeMem = EINA_FALSE;
    unsigned char *src = NULL;
    unsigned char *dst = NULL;
+   Eina_Bool ret = EINA_TRUE;
 
    screenshot = efl_util_screenshot_initialize(width, height);
    if (!screenshot)
@@ -971,6 +972,13 @@ _screen_shot_take(Eext_More_Option_Data *data)
      }
 
    tbm_surface_map(surface, TBM_SURF_OPTION_READ, &info);
+   if (!info.planes[0].ptr)
+     {
+        LOGE("No info.planes[0].ptr");
+        ret = EINA_FALSE;
+        goto error;
+     }
+
    if (info.width == (info.planes[0].stride / 4))
      {
         ptr = info.planes[0].ptr;
@@ -981,6 +989,8 @@ _screen_shot_take(Eext_More_Option_Data *data)
         if (!ptr)
           {
              LOGE("Memory Error");
+             ret = EINA_FALSE;
+             goto error;
           }
         freeMem = EINA_TRUE;
 
@@ -1006,7 +1016,8 @@ _screen_shot_take(Eext_More_Option_Data *data)
    if (!image)
      {
         LOGE("Image Creation failed");
-        return EINA_FALSE;
+        ret = EINA_FALSE;
+        goto error;
      }
    evas_object_image_size_set(image, TIZEN_WEARABLE_SCREEN_SIZE, TIZEN_WEARABLE_SCREEN_SIZE);
    evas_object_image_data_set(image, bufpixels);
@@ -1018,11 +1029,13 @@ _screen_shot_take(Eext_More_Option_Data *data)
      {
         evas_object_del(image);
         LOGE("Image Save failed");
-        return EINA_FALSE;
+        ret = EINA_FALSE;
+        goto error;
      }
 //   mold->blur_image = //_capture_image_masking_apply(data, image);
    evas_object_del(image);
 
+error:
    if (freeMem == EINA_TRUE && ptr)
      {
         free(ptr);
@@ -1033,7 +1046,7 @@ _screen_shot_take(Eext_More_Option_Data *data)
    efl_util_screenshot_deinitialize(screenshot);
 
    LOGI("Screenshot Success");
-   return EINA_TRUE;
+   return ret;
 }
 
 static void