Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 21c1140b536ca89bfc2c3feaa1e6404d11839160 https://github.com/WebKit/WebKit/commit/21c1140b536ca89bfc2c3feaa1e6404d11839160 Author: Vitaly Dyachkov <vit...@igalia.com> Date: 2024-01-12 (Fri, 12 Jan 2024)
Changed paths: M Source/WebCore/Modules/notifications/NotificationResourcesLoader.cpp M Source/WebCore/Modules/notifications/NotificationResourcesLoader.h Log Message: ----------- [GTK][WPE][Debug] imported/w3c/web-platform-tests/notifications/instance.https.html is a constant crash https://bugs.webkit.org/show_bug.cgi?id=267132 Reviewed by Carlos Garcia Campos. Currently, when `NotificationResourcesLoader` starts downloading notification resources, we create a "ResourceLoader" per resource (we only support the icon resource for now) and add it to the set of running loaders `m_loaders`. When a `ResourceLoader` finishes, we check if it was the last one running. If yes, we run the `NotificationResourcesLoader`'s completion handler. But in some circumstances (e.g. when the icon URL is bogus) a `ResouceLoader` can execute its completion handler synchronously during construction. In this case, the `NotificationResourcesLoader`'s completion handler will be called from `didFinishLoadingResource()` because `m_loaders.isEmpty()` since we haven't added the loader to the set yet. To prevent it, this patch checks that `ResouceLoader` hasn't finished yet before adding it to the set of running loaders. * Source/WebCore/Modules/notifications/NotificationResourcesLoader.cpp: (WebCore::NotificationResourcesLoader::start): (WebCore::NotificationResourcesLoader::stop): (WebCore::NotificationResourcesLoader::didFinishLoadingResource): (WebCore::NotificationResourcesLoader::ResourceLoader::didFinishLoading): (WebCore::NotificationResourcesLoader::ResourceLoader::didFail): * Source/WebCore/Modules/notifications/NotificationResourcesLoader.h: Canonical link: https://commits.webkit.org/272970@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes