e_desk_area: Check comp data has a valid e_client before modify client list 66/308566/2
authorJunseok Kim <juns.kim@samsung.com>
Wed, 27 Mar 2024 10:36:50 +0000 (19:36 +0900)
committerJunSeok Kim <juns.kim@samsung.com>
Wed, 27 Mar 2024 11:58:18 +0000 (11:58 +0000)
Change-Id: I8b110512ae7346815aaf4c8046dea607a0895bc7

src/bin/e_desk_area.c

index 9a5731b..6f21e24 100644 (file)
@@ -226,6 +226,9 @@ _e_comp_object_layer_update(E_Desk_Area *eda, Evas_Object *obj,
      {
         layer = evas_object_layer_get(o);
         cw2 = evas_object_data_get(o, "comp_obj");
+        if (cw2)
+          if (!cw2->ec || e_object_is_del(E_OBJECT(cw2->ec)))
+            cw2 = NULL;
         while (!cw2)
           {
              if (!e_util_strcmp(evas_object_name_get(o), "layer_obj")) break;
@@ -243,7 +246,13 @@ _e_comp_object_layer_update(E_Desk_Area *eda, Evas_Object *obj,
                   if (ec) o = ec->frame;
                }
 
-             if (o) cw2 = evas_object_data_get(o, "comp_obj");
+             if (o)
+               {
+                  cw2 = evas_object_data_get(o, "comp_obj");
+                  if (cw2)
+                    if (!cw2->ec || e_object_is_del(E_OBJECT(cw2->ec)))
+                      cw2 = NULL;
+               }
           }
      }
 
@@ -295,6 +304,9 @@ _e_comp_intercept_stack_helper(E_Desk_Area *eda, E_Comp_Object *cw, Evas_Object
      }
 
    cw2 = evas_object_data_get(o, "comp_obj");
+   if (cw2)
+     if (!cw2->ec || e_object_is_del(E_OBJECT(cw2->ec)))
+       cw2 = NULL;
 
    /* assume someone knew what they were doing during client init */
    if (cw->ec->new_client)
@@ -345,7 +357,13 @@ _e_comp_intercept_stack_helper(E_Desk_Area *eda, E_Comp_Object *cw, Evas_Object
                o = ec->frame;
              //else //wat
           }
-        if (o) cw2 = evas_object_data_get(o, "comp_obj");
+        if (o)
+          {
+             cw2 = evas_object_data_get(o, "comp_obj");
+             if (cw2)
+               if (!cw2->ec || e_object_is_del(E_OBJECT(cw2->ec)))
+                 cw2 = NULL;
+          }
      }
 
    if (cw2 && cw->layer != cw2->layer)