e_client: Add check for null view_client 18/321318/1
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 19 Mar 2025 00:57:10 +0000 (09:57 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Wed, 19 Mar 2025 01:41:40 +0000 (01:41 +0000)
In _e_client_free, `view_client` can be null if the creation of E_Client
instance fails before creating `view_client`.

This fixes the crash:

 #3  0xf7c92a8c in __GI___assert_fail () at /usr/src/debug/glibc-2.30-3.14.arm/assert/assert.c:101
 #4  0x000f3a56 in e_view_client_view_get (client=<optimized out>) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/core/e_view_client.c:108
 #5  0x001120da in e_view_client_view_get (client=<optimized out>) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/utils/e_uuid_store.c:159
 #6  _e_client_free (ec=0xf5d66520) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/core/e_client.c:1116

Change-Id: Idc0df7e27be12b33ada910d2fb427288850806aa
(cherry picked from commit eaa3e39cfa7616992460e4891e6eb44425b259c3)

src/bin/core/e_client.c

index 890920f4a74d52ee9734287e4c6d77bbe4e94831..7c80f731997589ca402e157bda13c22b1f361cbe 100644 (file)
@@ -1124,7 +1124,8 @@ _e_client_free(E_Client *ec)
    eina_stringshare_replace(&ec->icccm.window_role, NULL);
    e_client_netwm_name_set(ec, NULL);
 
-   e_view_destroy(e_view_client_view_get(PRI(ec)->view_client));
+   if (PRI(ec)->view_client)
+     e_view_destroy(e_view_client_view_get(PRI(ec)->view_client));
 
 #ifdef CLIENT_DEL_STACK_ISSUE
    _e_client_hook_call(E_CLIENT_HOOK_FREE, ec);