e_client: Ensure E_Client has frame object 67/319167/1
authorSeunghun Lee <shiin.lee@samsung.com>
Mon, 3 Feb 2025 04:11:30 +0000 (13:11 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Wed, 5 Feb 2025 01:11:35 +0000 (10:11 +0900)
commitb38a3547ee5e7f29a9831da72b068c3f7da50e6e
tree55ead3ca5da5df8f4c9063f38ddf32ed1f69963b
parentdf0a3f7ba06ee089a851e5ff7179758120c35002
e_client: Ensure E_Client has frame object

This prevents creation of E_Client instances without corresponding frame
objects due to undefined behavior.

This tries to fix failure of following assertion.

 #3  0xf77bca8c in __GI___assert_fail (assertion=0xf5891520 "\001", assertion@entry=0x16cf68 "client != NULL", file=file@entry=0x16cdec "src/bin/core/e_view_client.c", line=line@entry=108, function=function@entry=0x16dfd4 <__PRETTY_FUNCTION__.52349> "e_view_client_view_get") at /usr/src/debug/glibc-2.30-3.14.arm/assert/assert.c:101
 #4  0x000f34ba 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  0x000fd1de 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_zone.c:1098
 #6  e_zone_has_ec (zone=0xf5891520, ec=<optimized out>) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/core/e_zone.c:1100
 #7  0x00072c10 in e_comp_zone_find_by_ec (ec=0x6c) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/compmgr/e_comp.c:1421
 #8  0x0009f7a0 in e_policy_client_add (ec=<optimized out>) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/windowmgr/e_policy.c:2344
 #9  _e_policy_zone_cb_hook_client_new_client_post (d=0x235e508, ec=0x257ddd0) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/windowmgr/e_policy_zone.c:959
 #10 0x00111776 in _e_client_hook_call (hookpoint=E_CLIENT_HOOK_NEW_CLIENT_POST, ec=0x257ddd0) at /usr/src/debug/enlightenment-0.20.0-tz9_36.1.1.arm/src/bin/core/e_client.c:325

Change-Id: I2b2ed84f25c0622eb4432488b0bfbf4cb7e89f37
src/bin/core/e_client.c