From 883a97984cd15d99050677efa6bf66935a04c653 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Tue, 26 Sep 2023 11:53:37 +0200 Subject: [PATCH] LibWeb: Use Core::Timer instead of Platform::Timer in HTML::Timer By using Core::Timer that accepts Function instead of JS::SafeFunction in Platform::Timer does we fix memory leak caused by circular dependency of timer's callback and timer itself. --- Userland/Libraries/LibWeb/HTML/Timer.cpp | 6 +++--- Userland/Libraries/LibWeb/HTML/Timer.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/Timer.cpp b/Userland/Libraries/LibWeb/HTML/Timer.cpp index fa0d509b0f..1cdee1f405 100644 --- a/Userland/Libraries/LibWeb/HTML/Timer.cpp +++ b/Userland/Libraries/LibWeb/HTML/Timer.cpp @@ -4,10 +4,10 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include #include #include -#include namespace Web::HTML { @@ -21,9 +21,9 @@ Timer::Timer(JS::Object& window_or_worker_global_scope, i32 milliseconds, Functi , m_callback(move(callback)) , m_id(id) { - m_timer = Platform::Timer::create_single_shot(milliseconds, [this] { + m_timer = Core::Timer::create_single_shot(milliseconds, [this] { m_callback(); - }); + }).release_value_but_fixme_should_propagate_errors(); } void Timer::visit_edges(Cell::Visitor& visitor) diff --git a/Userland/Libraries/LibWeb/HTML/Timer.h b/Userland/Libraries/LibWeb/HTML/Timer.h index bae09f1d92..0889443155 100644 --- a/Userland/Libraries/LibWeb/HTML/Timer.h +++ b/Userland/Libraries/LibWeb/HTML/Timer.h @@ -31,7 +31,7 @@ private: virtual void visit_edges(Cell::Visitor&) override; - RefPtr m_timer; + RefPtr m_timer; JS::NonnullGCPtr m_window_or_worker_global_scope; Function m_callback; i32 m_id { 0 };