e_client: Add check for null view_client 15/321315/1
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 19 Mar 2025 00:57:10 +0000 (09:57 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 19 Mar 2025 01:26:54 +0000 (10:26 +0900)
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

src/bin/core/e_client.c

index c257fa7c98fc605ca6c60da389f959472fa89165..da8f7e36f782fea49ab70b7810b7a4062d8b9f0c 100644 (file)
@@ -1077,7 +1077,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);