ecore_wl2: check reference count for avoiding crash 66/242966/1
authorHosang Kim <hosang12.kim@samsung.com>
Wed, 2 Sep 2020 04:16:09 +0000 (13:16 +0900)
committerHosang Kim <hosang12.kim@samsung.com>
Wed, 2 Sep 2020 06:08:27 +0000 (15:08 +0900)
@tizen_only
Change-Id: Icbbcfa21a309afef7d871981d94f82dc4ab5b9b0

src/lib/ecore_wl2/ecore_wl2_display.c

index f1ee581..062308c 100644 (file)
@@ -1509,10 +1509,13 @@ _ecore_wl2_display_connect(Ecore_Wl2_Display *ewd, Eina_Bool sync)
    if (!ewd->fd_hdl)
      {
         ERR("Fail to add ecore fd(%d, wl.display) handler", wl_display_get_fd(ewd->wl.display));
-        wl_registry_destroy(ewd->wl.registry);
-        wl_display_disconnect(ewd->wl.display);
-        ewd->wl.registry = NULL;
-        ewd->wl.display = NULL;
+        if (ewd->refs == 0)
+          {
+             wl_registry_destroy(ewd->wl.registry);
+             wl_display_disconnect(ewd->wl.display);
+             ewd->wl.registry = NULL;
+             ewd->wl.display = NULL;
+          }
         return EINA_FALSE;
      }
 // End of TIZEN_ONLY(20180109)
@@ -1729,9 +1732,12 @@ connect_err:
    ewd->xkb_context = NULL;
 
 context_err:
-   eina_hash_free(ewd->globals);
-   free(ewd->name);
-   free(ewd);
+   if (ewd->refs == 0)
+     {
+        eina_hash_free(ewd->globals);
+        free(ewd->name);
+        free(ewd);
+     }
 
    if (hash_create)
      {