mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 17:27:35 +00:00
LibWeb: Add GC finalizer to Layout::ImageBox
It's not safe to unregister ImageBox from the browsing context in the destructor (since the browsing context may have already been swept and destroyed).
This commit is contained in:
parent
c877eb47a2
commit
1885fe529f
2 changed files with 11 additions and 2 deletions
|
@ -18,8 +18,14 @@ ImageBox::ImageBox(DOM::Document& document, DOM::Element& element, NonnullRefPtr
|
||||||
browsing_context().register_viewport_client(*this);
|
browsing_context().register_viewport_client(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageBox::~ImageBox()
|
ImageBox::~ImageBox() = default;
|
||||||
|
|
||||||
|
void ImageBox::finalize()
|
||||||
{
|
{
|
||||||
|
Base::finalize();
|
||||||
|
|
||||||
|
// NOTE: We unregister from the browsing context in finalize() to avoid trouble
|
||||||
|
// in the scenario where our BrowsingContext has already been swept by GC.
|
||||||
browsing_context().unregister_viewport_client(*this);
|
browsing_context().unregister_viewport_client(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
namespace Web::Layout {
|
namespace Web::Layout {
|
||||||
|
|
||||||
class ImageBox
|
class ImageBox final
|
||||||
: public ReplacedBox
|
: public ReplacedBox
|
||||||
, public HTML::BrowsingContext::ViewportClient {
|
, public HTML::BrowsingContext::ViewportClient {
|
||||||
JS_CELL(ImageBox, ReplacedBox);
|
JS_CELL(ImageBox, ReplacedBox);
|
||||||
|
@ -37,6 +37,9 @@ private:
|
||||||
// ^BrowsingContext::ViewportClient
|
// ^BrowsingContext::ViewportClient
|
||||||
virtual void browsing_context_did_set_viewport_rect(Gfx::IntRect const&) final;
|
virtual void browsing_context_did_set_viewport_rect(Gfx::IntRect const&) final;
|
||||||
|
|
||||||
|
// ^JS::Cell
|
||||||
|
virtual void finalize() override;
|
||||||
|
|
||||||
int preferred_width() const;
|
int preferred_width() const;
|
||||||
int preferred_height() const;
|
int preferred_height() const;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue