Changeset 285713 in webkit
- Timestamp:
- Nov 12, 2021, 4:28:01 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/css/revert-layer-stack-overflow-expected.txt (added)
-
LayoutTests/fast/css/revert-layer-stack-overflow.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/style/StyleBuilder.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r285710 r285713 1 2021-11-12 Antti Koivisto <antti@apple.com> 2 3 Stack overflow with revert and revert-layer 4 https://bugs.webkit.org/show_bug.cgi?id=233033 5 rdar://85336439 6 7 Reviewed by Antoine Quint. 8 9 * fast/css/revert-layer-stack-overflow-expected.txt: Added. 10 * fast/css/revert-layer-stack-overflow.html: Added. 11 1 12 2021-11-12 Antti Koivisto <antti@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r285710 r285713 1 2021-11-12 Antti Koivisto <antti@apple.com> 2 3 Stack overflow with revert and revert-layer 4 https://bugs.webkit.org/show_bug.cgi?id=233033 5 rdar://85336439 6 7 Reviewed by Antoine Quint. 8 9 Test: fast/css/revert-layer-stack-overflow.html 10 11 We end up using a rollback cascade made for revert-layer to do revert and that leads to eternal recursion. 12 13 * style/StyleBuilder.cpp: 14 (WebCore::Style::Builder::ensureRollbackCascadeForRevert): 15 (WebCore::Style::Builder::ensureRollbackCascadeForRevertLayer): 16 17 Key the rollback cascade map with the reverted values instead of the original ones since the same 18 original keys produce different rollbacks depending on whether it is made for revert or revert-layer. 19 1 20 2021-11-12 Antti Koivisto <antti@apple.com> 2 21 -
trunk/Source/WebCore/style/StyleBuilder.cpp
r285624 r285713 376 376 return nullptr; 377 377 378 --rollbackCascadeLevel; 379 378 380 auto key = makeRollbackCascadeKey(rollbackCascadeLevel, RuleSet::cascadeLayerPriorityForUnlayered); 379 381 return m_rollbackCascades.ensure(key, [&] { 380 return makeUnique<const PropertyCascade>(m_cascade, --rollbackCascadeLevel, RuleSet::cascadeLayerPriorityForUnlayered);382 return makeUnique<const PropertyCascade>(m_cascade, rollbackCascadeLevel, RuleSet::cascadeLayerPriorityForUnlayered); 381 383 }).iterator->value.get(); 382 384 } … … 387 389 return nullptr; 388 390 391 --rollbackLayerPriority; 392 389 393 auto key = makeRollbackCascadeKey(cascadeLevel, rollbackLayerPriority); 390 394 return m_rollbackCascades.ensure(key, [&] { 391 return makeUnique<const PropertyCascade>(m_cascade, cascadeLevel, rollbackLayerPriority - 1);395 return makeUnique<const PropertyCascade>(m_cascade, cascadeLevel, rollbackLayerPriority); 392 396 }).iterator->value.get(); 393 397 }
Note:
See TracChangeset
for help on using the changeset viewer.