e_client: Fix abort on dereferencing null pointer 39/320139/1
authorSeunghun Lee <shiin.lee@samsung.com>
Mon, 24 Feb 2025 06:23:27 +0000 (15:23 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Mon, 24 Feb 2025 09:22:45 +0000 (18:22 +0900)
This fixes following assert failure.

 #3  0xb602ca8c in __GI___assert_fail (assertion=0xb4101520 "\001",
     assertion@entry=0x16cfd8 "client != NULL", file=file@entry=0x16ce5c "src/bin/core/e_view_client.c", line=line@entry=108, function=function@entry=0x16e044 <__PRETTY_FUNCTION__.52349> "e_view_client_view_get") at /usr/src/debug/glibc-2.30-3.14.arm/assert/assert.c:101
 #4  0x000f34c2 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  0x0010fdd4 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_client.c:1179
 #6  _e_client_del (ec=0xb4101520) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/core/e_client.c:1184

The function, _e_client_del() can be called without ec->frame if
creating ec->frame is failed.

Change-Id: Icd39a73787b5feca9b8d6c1e1ee3e54f6285e2cc

src/bin/core/e_client.c

index 28c384789fb26ccc61ac9d2531c00099ac52e39e..58b9d9571a53ac456398f2b58e2aabafb20f4816 100644 (file)
@@ -1192,7 +1192,8 @@ _e_client_del(E_Client *ec)
    if (!stopping)
      {
         e_client_comp_hidden_set(ec, 1);
-        e_view_pass_events_set(e_view_client_view_get(PRI(ec)->view_client), true);
+        if (PRI(ec)->view_client)
+          e_view_pass_events_set(e_view_client_view_get(PRI(ec)->view_client), true);
      }
 
    E_FREE_FUNC(ec->ping_poller, ecore_poller_del);