Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 76b650f4f5e3534ea184a924f8236b2b3a41c891
      
https://github.com/WebKit/WebKit/commit/76b650f4f5e3534ea184a924f8236b2b3a41c891
  Author: Chris Dumez <[email protected]>
  Date:   2026-10-07 (Wed, 07 Oct 2026)

  Changed paths:
    M Source/WTF/icu/README
    M Source/WTF/icu/unicode/alphaindex.h
    M Source/WTF/icu/unicode/appendable.h
    M Source/WTF/icu/unicode/basictz.h
    M Source/WTF/icu/unicode/brkiter.h
    M Source/WTF/icu/unicode/bytestream.h
    M Source/WTF/icu/unicode/bytestrie.h
    M Source/WTF/icu/unicode/bytestriebuilder.h
    M Source/WTF/icu/unicode/calendar.h
    M Source/WTF/icu/unicode/caniter.h
    M Source/WTF/icu/unicode/casemap.h
    M Source/WTF/icu/unicode/char16ptr.h
    M Source/WTF/icu/unicode/chariter.h
    M Source/WTF/icu/unicode/choicfmt.h
    M Source/WTF/icu/unicode/coleitr.h
    M Source/WTF/icu/unicode/coll.h
    M Source/WTF/icu/unicode/compactdecimalformat.h
    M Source/WTF/icu/unicode/curramt.h
    M Source/WTF/icu/unicode/currpinf.h
    M Source/WTF/icu/unicode/currunit.h
    M Source/WTF/icu/unicode/datefmt.h
    M Source/WTF/icu/unicode/dbbi.h
    M Source/WTF/icu/unicode/dcfmtsym.h
    M Source/WTF/icu/unicode/decimfmt.h
    M Source/WTF/icu/unicode/displayoptions.h
    M Source/WTF/icu/unicode/dtfmtsym.h
    M Source/WTF/icu/unicode/dtintrv.h
    M Source/WTF/icu/unicode/dtitvfmt.h
    M Source/WTF/icu/unicode/dtitvinf.h
    M Source/WTF/icu/unicode/dtptngen.h
    M Source/WTF/icu/unicode/dtrule.h
    M Source/WTF/icu/unicode/edits.h
    M Source/WTF/icu/unicode/enumset.h
    M Source/WTF/icu/unicode/errorcode.h
    M Source/WTF/icu/unicode/fieldpos.h
    M Source/WTF/icu/unicode/filteredbrk.h
    M Source/WTF/icu/unicode/fmtable.h
    M Source/WTF/icu/unicode/format.h
    M Source/WTF/icu/unicode/formattednumber.h
    M Source/WTF/icu/unicode/formattedvalue.h
    M Source/WTF/icu/unicode/fpositer.h
    M Source/WTF/icu/unicode/gender.h
    M Source/WTF/icu/unicode/gregocal.h
    M Source/WTF/icu/unicode/icudataver.h
    M Source/WTF/icu/unicode/icuplug.h
    M Source/WTF/icu/unicode/idna.h
    M Source/WTF/icu/unicode/listformatter.h
    M Source/WTF/icu/unicode/localebuilder.h
    M Source/WTF/icu/unicode/localematcher.h
    M Source/WTF/icu/unicode/localpointer.h
    M Source/WTF/icu/unicode/locdspnm.h
    M Source/WTF/icu/unicode/locid.h
    M Source/WTF/icu/unicode/measfmt.h
    M Source/WTF/icu/unicode/measunit.h
    M Source/WTF/icu/unicode/measure.h
    M Source/WTF/icu/unicode/messagepattern.h
    M Source/WTF/icu/unicode/msgfmt.h
    M Source/WTF/icu/unicode/normalizer2.h
    M Source/WTF/icu/unicode/normlzr.h
    M Source/WTF/icu/unicode/nounit.h
    M Source/WTF/icu/unicode/numberformatter.h
    M Source/WTF/icu/unicode/numberrangeformatter.h
    M Source/WTF/icu/unicode/numfmt.h
    M Source/WTF/icu/unicode/numsys.h
    M Source/WTF/icu/unicode/parseerr.h
    M Source/WTF/icu/unicode/parsepos.h
    M Source/WTF/icu/unicode/platform.h
    M Source/WTF/icu/unicode/plurfmt.h
    M Source/WTF/icu/unicode/plurrule.h
    M Source/WTF/icu/unicode/ptypes.h
    M Source/WTF/icu/unicode/putil.h
    M Source/WTF/icu/unicode/rbbi.h
    M Source/WTF/icu/unicode/rbnf.h
    M Source/WTF/icu/unicode/rbtz.h
    M Source/WTF/icu/unicode/regex.h
    M Source/WTF/icu/unicode/region.h
    M Source/WTF/icu/unicode/reldatefmt.h
    M Source/WTF/icu/unicode/rep.h
    M Source/WTF/icu/unicode/resbund.h
    M Source/WTF/icu/unicode/schriter.h
    M Source/WTF/icu/unicode/scientificnumberformatter.h
    M Source/WTF/icu/unicode/search.h
    M Source/WTF/icu/unicode/selfmt.h
    M Source/WTF/icu/unicode/simpleformatter.h
    M Source/WTF/icu/unicode/simplenumberformatter.h
    M Source/WTF/icu/unicode/simpletz.h
    M Source/WTF/icu/unicode/smpdtfmt.h
    M Source/WTF/icu/unicode/sortkey.h
    M Source/WTF/icu/unicode/std_string.h
    M Source/WTF/icu/unicode/strenum.h
    M Source/WTF/icu/unicode/stringoptions.h
    M Source/WTF/icu/unicode/stringpiece.h
    M Source/WTF/icu/unicode/stringtriebuilder.h
    M Source/WTF/icu/unicode/stsearch.h
    M Source/WTF/icu/unicode/symtable.h
    M Source/WTF/icu/unicode/tblcoll.h
    M Source/WTF/icu/unicode/timezone.h
    M Source/WTF/icu/unicode/tmunit.h
    M Source/WTF/icu/unicode/tmutamt.h
    M Source/WTF/icu/unicode/tmutfmt.h
    M Source/WTF/icu/unicode/translit.h
    M Source/WTF/icu/unicode/tzfmt.h
    M Source/WTF/icu/unicode/tznames.h
    M Source/WTF/icu/unicode/tzrule.h
    M Source/WTF/icu/unicode/tztrans.h
    M Source/WTF/icu/unicode/ubidi.h
    M Source/WTF/icu/unicode/ubiditransform.h
    M Source/WTF/icu/unicode/ubrk.h
    M Source/WTF/icu/unicode/ucal.h
    M Source/WTF/icu/unicode/ucasemap.h
    M Source/WTF/icu/unicode/ucat.h
    M Source/WTF/icu/unicode/uchar.h
    M Source/WTF/icu/unicode/ucharstrie.h
    M Source/WTF/icu/unicode/ucharstriebuilder.h
    M Source/WTF/icu/unicode/uchriter.h
    M Source/WTF/icu/unicode/uclean.h
    M Source/WTF/icu/unicode/ucnv.h
    M Source/WTF/icu/unicode/ucnv_cb.h
    M Source/WTF/icu/unicode/ucnv_err.h
    M Source/WTF/icu/unicode/ucnvsel.h
    M Source/WTF/icu/unicode/ucol.h
    M Source/WTF/icu/unicode/ucoleitr.h
    M Source/WTF/icu/unicode/uconfig.h
    M Source/WTF/icu/unicode/ucpmap.h
    M Source/WTF/icu/unicode/ucptrie.h
    M Source/WTF/icu/unicode/ucsdet.h
    M Source/WTF/icu/unicode/ucurr.h
    M Source/WTF/icu/unicode/udat.h
    M Source/WTF/icu/unicode/udata.h
    M Source/WTF/icu/unicode/udateintervalformat.h
    M Source/WTF/icu/unicode/udatpg.h
    M Source/WTF/icu/unicode/udisplaycontext.h
    M Source/WTF/icu/unicode/udisplayoptions.h
    M Source/WTF/icu/unicode/uenum.h
    M Source/WTF/icu/unicode/ufieldpositer.h
    M Source/WTF/icu/unicode/uformattable.h
    M Source/WTF/icu/unicode/uformattednumber.h
    M Source/WTF/icu/unicode/uformattedvalue.h
    M Source/WTF/icu/unicode/ugender.h
    M Source/WTF/icu/unicode/uidna.h
    M Source/WTF/icu/unicode/uiter.h
    M Source/WTF/icu/unicode/uldnames.h
    M Source/WTF/icu/unicode/ulistformatter.h
    M Source/WTF/icu/unicode/uloc.h
    M Source/WTF/icu/unicode/ulocale.h
    M Source/WTF/icu/unicode/ulocbuilder.h
    M Source/WTF/icu/unicode/ulocdata.h
    M Source/WTF/icu/unicode/umachine.h
    M Source/WTF/icu/unicode/umisc.h
    M Source/WTF/icu/unicode/umsg.h
    M Source/WTF/icu/unicode/umutablecptrie.h
    M Source/WTF/icu/unicode/unifilt.h
    M Source/WTF/icu/unicode/unifunct.h
    M Source/WTF/icu/unicode/unimatch.h
    M Source/WTF/icu/unicode/unirepl.h
    M Source/WTF/icu/unicode/uniset.h
    M Source/WTF/icu/unicode/unistr.h
    M Source/WTF/icu/unicode/unorm.h
    M Source/WTF/icu/unicode/unorm2.h
    M Source/WTF/icu/unicode/unum.h
    M Source/WTF/icu/unicode/unumberformatter.h
    M Source/WTF/icu/unicode/unumberoptions.h
    M Source/WTF/icu/unicode/unumberrangeformatter.h
    M Source/WTF/icu/unicode/unumsys.h
    M Source/WTF/icu/unicode/uobject.h
    M Source/WTF/icu/unicode/upluralrules.h
    M Source/WTF/icu/unicode/uregex.h
    M Source/WTF/icu/unicode/uregion.h
    M Source/WTF/icu/unicode/ureldatefmt.h
    M Source/WTF/icu/unicode/urename.h
    M Source/WTF/icu/unicode/urep.h
    M Source/WTF/icu/unicode/ures.h
    M Source/WTF/icu/unicode/uscript.h
    M Source/WTF/icu/unicode/usearch.h
    M Source/WTF/icu/unicode/uset.h
    M Source/WTF/icu/unicode/usetiter.h
    M Source/WTF/icu/unicode/ushape.h
    M Source/WTF/icu/unicode/usimplenumberformatter.h
    M Source/WTF/icu/unicode/uspoof.h
    M Source/WTF/icu/unicode/usprep.h
    M Source/WTF/icu/unicode/ustdio.h
    M Source/WTF/icu/unicode/ustream.h
    M Source/WTF/icu/unicode/ustring.h
    M Source/WTF/icu/unicode/ustringtrie.h
    M Source/WTF/icu/unicode/utext.h
    M Source/WTF/icu/unicode/utf.h
    M Source/WTF/icu/unicode/utf16.h
    M Source/WTF/icu/unicode/utf8.h
    M Source/WTF/icu/unicode/utf_old.h
    M Source/WTF/icu/unicode/utmscale.h
    M Source/WTF/icu/unicode/utrace.h
    M Source/WTF/icu/unicode/utrans.h
    M Source/WTF/icu/unicode/utypes.h
    M Source/WTF/icu/unicode/uvernum.h
    M Source/WTF/icu/unicode/uversion.h
    M Source/WTF/icu/unicode/vtzone.h
    M Source/WTF/wtf/URL.cpp
    M Source/WebCore/Headers.cmake
    M Source/WebCore/PAL/pal/text/TextEncodingDetectorICU.cpp
    M Source/WebCore/SaferCPPExpectations/ForwardDeclCheckerExpectations
    M Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations
    M 
Source/WebCore/SaferCPPExpectations/NoUncheckedPtrMemberCheckerExpectations
    M Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/editing/ICUSearcher.cpp
    M Source/WebCore/layout/formattingContexts/inline/AbstractLineBuilder.h
    M Source/WebCore/layout/formattingContexts/inline/InlineContentAligner.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineContentAligner.h
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.h
    M Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLine.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBox.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBox.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
    A Source/WebCore/layout/formattingContexts/inline/InlineLineRun.h
    M Source/WebCore/layout/formattingContexts/inline/InlineQuirks.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineQuirks.h
    M Source/WebCore/layout/formattingContexts/inline/InlineSoftLineBreakItem.h
    M Source/WebCore/layout/formattingContexts/inline/LineLayoutResult.h
    M 
Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp
    M 
Source/WebCore/layout/formattingContexts/inline/ruby/RubyFormattingContext.cpp
    M 
Source/WebCore/layout/formattingContexts/inline/ruby/RubyFormattingContext.h
    M Source/WebCore/layout/formattingContexts/inline/text/TextUtil.h
    M Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp
    M 
Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.cpp
    M Source/WebCore/layout/integration/inline/InlineIteratorBoxModernPath.h
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
    M Source/WebCore/layout/layouttree/LayoutBox.cpp
    M Source/WebCore/layout/layouttree/LayoutBox.h
    M Source/WebCore/rendering/RenderElement.h
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebCore/rendering/mathml/RenderMathMLBlock.h

  Log Message:
  -----------
  [Safer CPP] Address some of the safer C++ warnings in the layout folder
https://bugs.webkit.org/show_bug.cgi?id=326637

Reviewed by Geoffrey Garen.

Address the Safer C++ warnings in WebCore/layout that can be fixed without 
adding any reference counting, using
NODELETE annotations, include fixes and small code restructuring.

Also mark WTF's vendored ICU headers as system headers, like installed ICU 
headers. The bots build against the
public SDK and use these headers, so the static analyzer reported ICU's opaque 
types as forward declarations.
This lets us drop the corresponding suppressions.

Fix the forward declared InlineFormattingContext members in 
AbstractLineBuilder, InlineFormattingUtils and Line
by breaking an include cycle: InlineFormattingContext.h was transitively 
including InlineLine.h and
AbstractLineBuilder.h, so they could not include it. Line::Run, Line::RunList 
and Line::Result move to a new
InlineLineRun.h header (Line keeps aliases), and headers that only need these 
types include it instead of
InlineLine.h.

* Source/WTF/icu/README:
* Source/WTF/icu/unicode/*.h:
Add `#pragma clang system_header` right after each include guard.

* Source/WTF/wtf/URL.cpp:
* Source/WebCore/PAL/pal/text/TextEncodingDetectorICU.cpp:
* Source/WebCore/editing/ICUSearcher.cpp:
Drop SUPPRESS_FORWARD_DECL_* now that the ICU headers are system headers.

* Source/WebCore/Headers.cmake:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/layout/formattingContexts/inline/InlineLineRun.h: Added.
Move Line::Run, Line::RunList, Line::Result and Line::ShapingBoundary here as 
LineRun, LineRunList, LineResult
and LineShapingBoundary.

* Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp:
* Source/WebCore/layout/formattingContexts/inline/InlineLine.h:
Alias the moved types and include InlineFormattingContext.h.

* Source/WebCore/layout/formattingContexts/inline/AbstractLineBuilder.h:
Include InlineFormattingContext.h.

* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.h:
Include FloatingContext.h, InlineLineRun.h and LineLayoutResult.h instead of 
InlineLine.h and InlineLineBuilder.h.

* Source/WebCore/layout/formattingContexts/inline/InlineContentAligner.h:
* Source/WebCore/layout/formattingContexts/inline/InlineLineBox.h:
* Source/WebCore/layout/formattingContexts/inline/InlineQuirks.h:
* Source/WebCore/layout/formattingContexts/inline/LineLayoutResult.h:
* 
Source/WebCore/layout/formattingContexts/inline/ruby/RubyFormattingContext.cpp:
* Source/WebCore/layout/formattingContexts/inline/ruby/RubyFormattingContext.h:
Use InlineLineRun.h instead of InlineLine.h.

* Source/WebCore/layout/formattingContexts/inline/text/TextUtil.h:
Remove unused InlineLine.h include.

* Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp:
* Source/WebCore/layout/formattingContexts/inline/InlineLineBox.cpp:
Include InlineFormattingContext.h, since InlineFormattingUtils.h cannot include 
it.

* Source/WebCore/layout/formattingContexts/inline/InlineContentAligner.cpp:
* Source/WebCore/layout/formattingContexts/inline/InlineQuirks.cpp:
* Source/WebCore/layout/formattingContexts/inline/InlineSoftLineBreakItem.h:
* 
Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp:
* Source/WebCore/layout/integration/inline/InlineIteratorBoxModernPath.h:
Add includes that were previously provided transitively.

* Source/WebCore/layout/layouttree/LayoutBox.cpp:
* Source/WebCore/layout/layouttree/LayoutBox.h:
Mark firstLineStyle() and rareData() as NODELETE.

* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/mathml/RenderMathMLBlock.h:
Mark RenderElement::firstLineStyle() as NODELETE, along with isAnonymousBlock() 
and isRenderMathMLBlock(),
which it calls.

* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
Turn the enclosingBoxForWrapOpportunity lambda into a NODELETE static function.

* Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp:
Call renderer.style() directly instead of storing it in an unchecked local.

* 
Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.cpp:
Replace std::min with a comparison in a NODELETE function, and drop NODELETE 
from functions that can destroy
objects.

* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
Replace std::min with a comparison.

Canonical link: https://commits.webkit.org/323059@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to