RESOLVED FIXED 285878
ASSERT SHOULD NEVER BE REACHED - WebCore::Layout::leadingInlineItemPositionOnLastLine
https://bugs.webkit.org/show_bug.cgi?id=285878
Summary ASSERT SHOULD NEVER BE REACHED - WebCore::Layout::leadingInlineItemPositionOn...
Matt Woodrow
Reported 2025-01-13 14:13:07 PST
https://github.com/WebKit/WebKit/pull/38817 imports the render-blocking tests, and causes two of them to fail with the above assertion. imported/w3c/web-platform-tests/html/dom/render-blocking/element-render-blocking-029.html imported/w3c/web-platform-tests/html/dom/render-blocking/element-render-blocking-031.html Crash log: https://ews-build.s3-us-west-2.amazonaws.com/macOS-Sequoia-Debug-WK2-Tests-EWS/a0e1a4a6-8489/results.html I'll disable the tests for now until this is fixed.
Attachments
[fast-cq]Patch (16.11 KB, patch)
2025-01-14 09:00 PST, alan
no flags
alan
Comment 1 2025-01-13 20:39:10 PST
This is caused by not computing the first/last inline boxes correctly which confuses the invalidation logic (falls back to full invalidation) --- a/Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContentBuilder.cpp +++ b/Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContentBuilder.cpp @@ -100,7 +100,6 @@ InlineContentBuilder::InlineContentBuilder(const RenderBlockFlow& blockFlow) FloatRect InlineContentBuilder::build(Layout::InlineLayoutResult&& layoutResult, InlineContent& inlineContent, const Layout::InlineDamage* lineDamage) const { inlineContent.releaseCaches(); - computeIsFirstIsLastBoxAndBidiReorderingForInlineContent(layoutResult.displayContent.boxes); if (layoutResult.range == Layout::InlineLayoutResult::Range::Full) { auto damagedRect = FloatRect { }; @@ -108,6 +107,7 @@ FloatRect InlineContentBuilder::build(Layout::InlineLayoutResult&& layoutResult, for (auto& line : inlineContent.displayContent().lines) damagedRect.unite(line.inkOverflow()); + computeIsFirstIsLastBoxAndBidiReorderingForInlineContent(layoutResult.displayContent.boxes); inlineContent.displayContent().set(WTFMove(layoutResult.displayContent)); adjustDisplayLines(inlineContent, 0); @@ -218,7 +218,9 @@ FloatRect InlineContentBuilder::build(Layout::InlineLayoutResult&& layoutResult, return damagedRect; }; - return handlePartialDisplayContentUpdate(); + auto damagedRect = handlePartialDisplayContentUpdate(); + computeIsFirstIsLastBoxAndBidiReorderingForInlineContent(inlineContent.displayContent().boxes); + return damagedRect; } void InlineContentBuilder::updateLineOverflow(InlineContent& inlineContent) const
alan
Comment 2 2025-01-14 09:00:09 PST
Created attachment 473901 [details] [fast-cq]Patch
EWS
Comment 3 2025-01-14 11:14:43 PST
Committed 288870@main (3b92ce0658c9): <https://commits.webkit.org/288870@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 473901 [details].
Radar WebKit Bug Importer
Comment 4 2025-01-14 11:16:18 PST
Note You need to log in before you can comment on or make changes to this bug.