From 9577cd853aebecb715d76d93f91414b54d697f1c Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 4 Sep 2023 09:51:00 +0200 Subject: [PATCH] LibWeb: Use JS::MarkedVector while parsing CSS keyframe rules We need to be sure they are marked in case the GC runs while we're in the CSS parser. --- Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp | 2 +- Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h | 4 ++-- Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp index 5d9d5fbea4f..be1485df17a 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp @@ -10,7 +10,7 @@ namespace Web::CSS { -JS::NonnullGCPtr CSSKeyframesRule::create(JS::Realm& realm, AK::FlyString name, Vector> keyframes) +JS::NonnullGCPtr CSSKeyframesRule::create(JS::Realm& realm, FlyString name, JS::MarkedVector> keyframes) { return realm.heap().allocate(realm, realm, move(name), move(keyframes)); } diff --git a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h index 7e7b407a598..f4e80f7ec43 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h @@ -21,7 +21,7 @@ class CSSKeyframesRule final : public CSSRule { WEB_PLATFORM_OBJECT(CSSKeyframesRule, CSSRule); public: - [[nodiscard]] static JS::NonnullGCPtr create(JS::Realm&, FlyString name, Vector>); + [[nodiscard]] static JS::NonnullGCPtr create(JS::Realm&, FlyString name, JS::MarkedVector>); virtual ~CSSKeyframesRule() = default; @@ -34,7 +34,7 @@ public: void set_name(String const& name) { m_name = name; } private: - CSSKeyframesRule(JS::Realm& realm, FlyString name, Vector> keyframes) + CSSKeyframesRule(JS::Realm& realm, FlyString name, JS::MarkedVector> keyframes) : CSSRule(realm) , m_name(move(name)) , m_keyframes(move(keyframes)) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 8f1f3f1f776..305f3ef44b9 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -1505,7 +1505,7 @@ CSSRule* Parser::convert_to_rule(NonnullRefPtr rule) auto child_tokens = TokenStream { rule->block()->values() }; - Vector> keyframes; + JS::MarkedVector> keyframes(m_context.realm().heap()); while (child_tokens.has_next_token()) { child_tokens.skip_whitespace(); // keyframe-selector = |