From b29915ed0f4fdb4e6072b10106da7d2066500330 Mon Sep 17 00:00:00 2001 From: jeon Date: Wed, 8 May 2019 20:44:01 +0900 Subject: [PATCH] pepper-devicemgr: fix segfault when pepper-devicemgr is destroy Change-Id: Ib1c398fe1ff3b2555ade49a15b3bd2a6c7552f41 --- src/lib/devicemgr/pepper-devicemgr.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lib/devicemgr/pepper-devicemgr.c b/src/lib/devicemgr/pepper-devicemgr.c index 52a8c53..3f8bd2e 100644 --- a/src/lib/devicemgr/pepper-devicemgr.c +++ b/src/lib/devicemgr/pepper-devicemgr.c @@ -459,11 +459,19 @@ static void _pepper_devicemgr_cb_unbind(struct wl_resource *resource) { pepper_devicemgr_t *pepper_devicemgr; + pepper_devicemgr_resource_t *rdata, *rtmp; pepper_devicemgr = wl_resource_get_user_data(resource); PEPPER_CHECK(pepper_devicemgr, return, "Invalid pepper_devicemgr_t\n"); _pepper_devicemgr_deinit_generator(pepper_devicemgr, resource); + + pepper_list_for_each_safe(rdata, rtmp, &pepper_devicemgr->resources, link) { + if (rdata->resource == resource) { + pepper_list_remove(&rdata->link); + free(rdata); + } + } } static void @@ -574,8 +582,6 @@ pepper_devicemgr_destroy(pepper_devicemgr_t *pepper_devicemgr) pepper_list_for_each_safe(rdata, rtmp, &pepper_devicemgr->resources, link) { wl_resource_destroy(rdata->resource); - pepper_list_remove(&rdata->link); - free(rdata); } if (pepper_devicemgr->devicemgr) { -- 2.34.1