[webkit-changes] [WebKit/WebKit] 1a09d8: Assertion failure in StyleGeneratedImage::removeCl...
Antti Koivisto
noreply at github.com
Tue May 16 08:32:53 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1a09d8d95ba6085df4ef44306c4bfc9fc86fdbc7
https://github.com/WebKit/WebKit/commit/1a09d8d95ba6085df4ef44306c4bfc9fc86fdbc7
Author: Antti Koivisto <antti at apple.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
A LayoutTests/fast/css/custom-property-deduplication-cross-fade-crash-expected.txt
A LayoutTests/fast/css/custom-property-deduplication-cross-fade-crash.html
M Source/WebCore/rendering/style/RenderStyle.cpp
M Source/WebCore/rendering/style/StyleCrossfadeImage.cpp
Log Message:
-----------
Assertion failure in StyleGeneratedImage::removeClient
https://bugs.webkit.org/show_bug.cgi?id=256840
rdar://107311467
Reviewed by Alan Baradlay.
* LayoutTests/fast/css/custom-property-deduplication-cross-fade-crash-expected.txt: Added.
* LayoutTests/fast/css/custom-property-deduplication-cross-fade-crash.html: Added.
* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::deduplicateCustomProperties):
Remove an optimization where we would after successfully deduplicating custom properties also
try to deduplicate the whole rare data struct. This is dangerous since it will mutate style
in all renderers that are using the rare data instance. Images in style need to be registered per-renderer
and that happens via RenderElement::setStyle. If style changes silently we fail to do this
registration.
This was also probably not super valuable. The main goal here was deduplicating large custom property data
which is still happening.
* Source/WebCore/rendering/style/StyleCrossfadeImage.cpp:
(WebCore::StyleCrossfadeImage::load):
Ensure we only trigger load for to/from image if it has not already been loaded.
We may end up in this case because only one of the images needs loading.
Canonical link: https://commits.webkit.org/264116@main
More information about the webkit-changes
mailing list