mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-30 15:02:56 +00:00
LibWeb: Use JS::HeapFunction in Fetch::Fetching::PendingResponse
This fixes a long-standing realm leak.
This commit is contained in:
parent
338dde70a1
commit
a9842ebe48
Notes:
sideshowbarker
2024-07-17 07:25:39 +09:00
Author: https://github.com/awesomekling
Commit: a9842ebe48
Pull-request: https://github.com/SerenityOS/serenity/pull/23815
Reviewed-by: https://github.com/ADKaster
2 changed files with 7 additions and 4 deletions
|
@ -34,6 +34,7 @@ PendingResponse::PendingResponse(JS::NonnullGCPtr<Infrastructure::Request> reque
|
|||
void PendingResponse::visit_edges(JS::Cell::Visitor& visitor)
|
||||
{
|
||||
Base::visit_edges(visitor);
|
||||
visitor.visit(m_callback);
|
||||
visitor.visit(m_request);
|
||||
visitor.visit(m_response);
|
||||
}
|
||||
|
@ -41,7 +42,7 @@ void PendingResponse::visit_edges(JS::Cell::Visitor& visitor)
|
|||
void PendingResponse::when_loaded(Callback callback)
|
||||
{
|
||||
VERIFY(!m_callback);
|
||||
m_callback = move(callback);
|
||||
m_callback = JS::create_heap_function(heap(), move(callback));
|
||||
if (m_response)
|
||||
run_callback();
|
||||
}
|
||||
|
@ -59,7 +60,9 @@ void PendingResponse::run_callback()
|
|||
VERIFY(m_callback);
|
||||
VERIFY(m_response);
|
||||
Platform::EventLoopPlugin::the().deferred_invoke([this] {
|
||||
m_callback(*m_response);
|
||||
VERIFY(m_callback);
|
||||
VERIFY(m_response);
|
||||
m_callback->function()(*m_response);
|
||||
m_request->remove_pending_response({}, *this);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue