From b02402e116da46d8ec51d3e418f83d12b8377fbe Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 21 Sep 2022 10:36:29 +0200 Subject: [PATCH] LibWeb: Fix null dereference in ResourceClient::set_resource() If resource_did_load() results in the ResourceClient being destroyed, we can't dereference the weak ResourceClient right after. --- Userland/Libraries/LibWeb/Loader/Resource.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWeb/Loader/Resource.cpp b/Userland/Libraries/LibWeb/Loader/Resource.cpp index eaf79fa751..931c1327da 100644 --- a/Userland/Libraries/LibWeb/Loader/Resource.cpp +++ b/Userland/Libraries/LibWeb/Loader/Resource.cpp @@ -176,12 +176,16 @@ void ResourceClient::set_resource(Resource* resource) return; // Make sure that reused resources also have their load callback fired. - if (weak_this->m_resource->is_loaded()) + if (weak_this->m_resource->is_loaded()) { weak_this->resource_did_load(); + return; + } // Make sure that reused resources also have their fail callback fired. - if (weak_this->m_resource->is_failed()) + if (weak_this->m_resource->is_failed()) { weak_this->resource_did_fail(); + return; + } }); } }