edje_cc: fix crash on image data initialization 93/239293/1 submit/tizen/20200723.215228
authorYeongjong Lee <yj34.lee@samsung.com>
Thu, 23 Jul 2020 10:35:12 +0000 (19:35 +0900)
committerYeongjong Lee <yj34.lee@samsung.com>
Thu, 23 Jul 2020 11:29:28 +0000 (20:29 +0900)
Summary:
Since commit a8538bacce1457a91e28b39a6417eaadb4744b50 a crash occurs when
Images.Set.Image is unused.

To avoid a crash, this patch skips setting image data for unused image sets.

Test Plan:

$edje_cc basic.edc

basic.edc
```
collections {
   set {
      name: "bubble";
      image {
         image: "bubble.png" COMP;
      }
   }
}
```

Reviewers: raster

Subscribers: cedric, #reviewers, #committers, eagleeye

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12063

Change-Id: Ibcb14df831f0a6eb51d69267b379f6480256969f

src/bin/edje/edje_cc_out.c
src/lib/edje/edje_private.h

index 87688f3..f3b80db 100644 (file)
@@ -1495,7 +1495,10 @@ data_image_sets_init(void)
         Eina_List *ll = NULL;
 
         set = edje_file->image_dir->sets + i;
-        if (!set->entries) continue;
+        //TIZEN_ONLY(20200723): fix crash on image data initialization
+        //if (!set->entries) continue;
+        if (!set->entries || set->unused) continue;
+        //
         EINA_LIST_FOREACH(set->entries, ll, set_entry)
           {
              img = &edje_file->image_dir->entries[set_entry->id];
@@ -4087,6 +4090,9 @@ free_group:
              if (set->name && eina_hash_find(images_in_use, set->name))
                continue;
 
+             //TIZEN_ONLY(20200723): fix crash on image data initialization
+             set->unused = EINA_TRUE;
+             //
              printf("Warning: Image set '%s' not used\n", set->name);
              EINA_LIST_FOREACH(set->entries, l, set_e)
                {
index a99d346..b0d6c3f 100644 (file)
@@ -701,6 +701,9 @@ struct _Edje_Image_Directory_Set
    Eina_List *entries;
 
    int id;
+   //TIZEN_ONLY(20200723): fix crash on image data initialization
+   Eina_Bool unused : 1;
+   //
 };
 
 struct _Edje_Image_Directory_Set_Entry