From 5ea8de0262f26fd4974cc1e2999b924815be0c10 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Wed, 8 Jan 2025 14:39:22 +0100 Subject: [PATCH] [DOM] Convert cleanup of FlushCurrentWord() to a ScopeExit task. Ensures consistent cleanup even if early exit due to OOM. --- dom/base/nsLineBreaker.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dom/base/nsLineBreaker.cpp b/dom/base/nsLineBreaker.cpp index 02fb97b40e..07416ec90b 100644 --- a/dom/base/nsLineBreaker.cpp +++ b/dom/base/nsLineBreaker.cpp @@ -10,6 +10,7 @@ #include "nsHyphenationManager.h" #include "nsHyphenator.h" #include "mozilla/gfx/2D.h" +#include "mozilla/ScopeExit.h" nsLineBreaker::nsLineBreaker() : mCurrentWordLanguage(nullptr), @@ -57,6 +58,14 @@ SetupCapitalization(const char16_t* aWord, uint32_t aLength, nsresult nsLineBreaker::FlushCurrentWord() { + auto cleanup = mozilla::MakeScopeExit([&] { + mCurrentWord.Clear(); + mTextItems.Clear(); + mCurrentWordContainsComplexChar = false; + mCurrentWordContainsMixedLang = false; + mCurrentWordLanguage = nullptr; + }); + uint32_t length = mCurrentWord.Length(); AutoTArray breakState; if (!breakState.AppendElements(length)) @@ -137,11 +146,6 @@ nsLineBreaker::FlushCurrentWord() offset += ti->mLength; } - mCurrentWord.Clear(); - mTextItems.Clear(); - mCurrentWordContainsComplexChar = false; - mCurrentWordContainsMixedLang = false; - mCurrentWordLanguage = nullptr; return NS_OK; }