ladybird/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.cpp
Aliaksandr Kalenik 00562d53e5 LibWeb: Save weak pointer to document in DocumentLoadEventDelayer
This prevents GC leaks caused by a DocumentLoadEventDelayer that is
never destroyed (for example, when its Document becomes inactive) from
holding a strong reference to the Document and keeping it alive.
2025-12-24 10:19:28 +01:00

38 lines
917 B
C++

/*
* Copyright (c) 2021, Andreas Kling <andreas@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/DOM/Document.h>
#include <LibWeb/DOM/DocumentLoadEventDelayer.h>
namespace Web::DOM {
DocumentLoadEventDelayer::DocumentLoadEventDelayer(Document& document)
: m_document(document)
{
m_document->increment_number_of_things_delaying_the_load_event({});
}
DocumentLoadEventDelayer::DocumentLoadEventDelayer(DocumentLoadEventDelayer&& delayer)
: m_document(move(delayer.m_document))
{
delayer.m_document = nullptr;
}
DocumentLoadEventDelayer& DocumentLoadEventDelayer::operator=(DocumentLoadEventDelayer&& delayer)
{
m_document = move(delayer.m_document);
delayer.m_document = nullptr;
return *this;
}
DocumentLoadEventDelayer::~DocumentLoadEventDelayer()
{
if (m_document)
m_document->decrement_number_of_things_delaying_the_load_event({});
}
}