LibWeb: Make CustomElementDefinition relationship with GC more sane

1. Stop using GC::Root in member variables, since that usually creates
   a realm leak.

2. Stop putting OrderedHashMap<FlyString, GC::Ptr> on the stack while
   setting these up, since that won't protect the objects from GC.
This commit is contained in:
Andreas Kling 2024-12-26 18:17:41 +01:00 committed by Andreas Kling
parent 062e33438e
commit ceefe7d858
Notes: github-actions[bot] 2024-12-27 09:03:54 +00:00
5 changed files with 17 additions and 14 deletions

View file

@ -185,7 +185,7 @@ JS::ThrowCompletionOr<void> CustomElementRegistry::define(String const& name, We
// NOTE: This is not in the spec, but is required because of how we catch the exception by using a lambda, meaning we need to define this
// variable outside of it to use it later.
CustomElementDefinition::LifecycleCallbacksStorage lifecycle_callbacks;
OrderedHashMap<FlyString, GC::Root<WebIDL::CallbackType>> lifecycle_callbacks;
// 14. Run the following steps while catching any exceptions:
auto get_definition_attributes_from_constructor = [&]() -> JS::ThrowCompletionOr<void> {