[webkit-changes] [WebKit/WebKit] a40f3a: Address safer C++ static analysis warnings in WKOb...
Chris Dumez
noreply at github.com
Fri Feb 21 07:35:25 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a40f3a3fba44cd2c0d2afcde46fe1b32b1a8fe35
https://github.com/WebKit/WebKit/commit/a40f3a3fba44cd2c0d2afcde46fe1b32b1a8fe35
Author: Chris Dumez <cdumez at apple.com>
Date: 2025-02-21 (Fri, 21 Feb 2025)
Changed paths:
M Source/JavaScriptCore/dfg/DFGAbstractValue.cpp
M Source/WTF/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations
M Source/WTF/WTF.xcodeproj/project.pbxproj
A Source/WTF/wtf/AlignedStorage.h
M Source/WTF/wtf/CMakeLists.txt
M Source/WTF/wtf/HashTable.h
M Source/WTF/wtf/NeverDestroyed.h
M Source/WTF/wtf/RobinHoodHashTable.h
M Source/WTF/wtf/threads/Signals.h
M Source/WebKit/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations
M Source/WebKit/Shared/API/Cocoa/_WKFrameHandleInternal.h
M Source/WebKit/Shared/API/Cocoa/_WKHitTestResultInternal.h
M Source/WebKit/Shared/Cocoa/WKNSArray.mm
M Source/WebKit/Shared/Cocoa/WKNSData.mm
M Source/WebKit/Shared/Cocoa/WKNSDictionary.mm
M Source/WebKit/Shared/Cocoa/WKNSNumber.mm
M Source/WebKit/Shared/Cocoa/WKObject.h
M Source/WebKit/UIProcess/API/Cocoa/WKBackForwardList.mm
M Source/WebKit/UIProcess/API/Cocoa/WKBackForwardListItem.mm
M Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStoreInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKContentWorldInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKContextMenuElementInfoInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKDownloadInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKFrameInfoInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStoreInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm
M Source/WebKit/UIProcess/API/Cocoa/WKNavigationActionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKNavigationData.mm
M Source/WebKit/UIProcess/API/Cocoa/WKNavigationResponseInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKPreferencesInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKSecurityOriginInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKUserContentControllerInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKUserScriptInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionActionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionCommandInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContextInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerConfigurationInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataRecordInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMatchPatternInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMessagePortInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h
M Source/WebKit/UIProcess/API/Cocoa/WKWindowFeaturesInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifestInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKAttachmentInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSessionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKContentRuleListActionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKContextMenuElementInfoInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKCustomHeaderFieldsInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKDataTaskInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKFeatureInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKFrameTreeNodeInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKGeolocationPositionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfigurationInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorDebuggableInfoInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtensionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfigurationInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadInfoInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstPartyInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdPartyInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfoInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementRequestInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKTextRunInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKUserInitiatedActionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheetInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponseInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionSidebarInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebPushDaemonConnectionInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebPushMessageInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebPushSubscriptionDataInternal.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfigurationInternal.h
M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInCSSStyleDeclarationHandle.mm
M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm
M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm
M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm
M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm
M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm
M Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm
M Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm
Log Message:
-----------
Address safer C++ static analysis warnings in WKObject.h
https://bugs.webkit.org/show_bug.cgi?id=288056
Reviewed by Timothy Hatcher and Darin Adler.
- Replace API::ObjectStorage with a new WTF::AlignedStorage type
- WTF::AlignedStorage offers several benefits since it is strongly typed and it
doesn't rely on std::aligned_storage which is deprecated in C++23. Instead,
it uses `alignas(Alignment) std::byte m_storage[sizeof(T)];` which is the
suggested replacement in the standard. WTF::AlignedStorage also has the
benefit of hiding away the reinterpret_cast which is still required and
requirements suppression to silence static analysis
- The PR adopts WTF::AlignedStorage instead of std::aligned_storage in several
places too.
* Source/JavaScriptCore/dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::ensureCanInitializeWithZeros):
* Source/WTF/WTF.xcodeproj/project.pbxproj:
* Source/WTF/wtf/AlignedStorage.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfoInternal.h.
(WTF::sizeof):
* Source/WTF/wtf/HashTable.h:
(WTF::shouldValidateKey>::checkKey):
* Source/WTF/wtf/NeverDestroyed.h:
(WTF::NeverDestroyed::storagePointer const):
(WTF::LazyNeverDestroyed::storagePointerWithoutAccessCheck const):
* Source/WTF/wtf/RobinHoodHashTable.h:
(WTF::SizePolicy>::checkKey):
* Source/WTF/wtf/threads/Signals.h:
* Source/WebKit/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations:
* Source/WebKit/Shared/API/Cocoa/_WKFrameHandleInternal.h:
* Source/WebKit/Shared/API/Cocoa/_WKHitTestResultInternal.h:
* Source/WebKit/Shared/Cocoa/WKNSArray.mm:
* Source/WebKit/Shared/Cocoa/WKNSData.mm:
* Source/WebKit/Shared/Cocoa/WKNSDictionary.mm:
* Source/WebKit/Shared/Cocoa/WKNSNumber.mm:
* Source/WebKit/Shared/Cocoa/WKObject.h:
(API::ObjectStorage::get): Deleted.
(API::ObjectStorage::operator*): Deleted.
(API::ObjectStorage::operator->): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/WKBackForwardList.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKBackForwardListItem.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStoreInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKContentWorldInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKContextMenuElementInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKDownloadInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKFrameInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStoreInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationActionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationData.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationResponseInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKPreferencesInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKSecurityOriginInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKUserContentControllerInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKUserScriptInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionActionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionCommandInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContextInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerConfigurationInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataRecordInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMatchPatternInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMessagePortInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWindowFeaturesInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifestInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKAttachmentInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSessionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKContentRuleListActionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKContextMenuElementInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKCustomHeaderFieldsInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKDataTaskInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKFeatureInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKFrameTreeNodeInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKGeolocationPositionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfigurationInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorDebuggableInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtensionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfigurationInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstPartyInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdPartyInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementRequestInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTextRunInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKUserInitiatedActionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheetInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponseInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionSidebarInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebPushDaemonConnectionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebPushMessageInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebPushSubscriptionDataInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfigurationInternal.h:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInCSSStyleDeclarationHandle.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
Canonical link: https://commits.webkit.org/290792@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list