Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 263f7591998f036f63cefd4581e156c809205b0f
https://github.com/WebKit/WebKit/commit/263f7591998f036f63cefd4581e156c809205b0f
Author: Chris Dumez <[email protected]>
Date: 2024-10-12 (Sat, 12 Oct 2024)
Changed paths:
M Source/WTF/wtf/HashMap.h
M Source/WTF/wtf/ObjectIdentifier.h
M Source/WebCore/workers/service/server/SWServer.cpp
Log Message:
-----------
HashMap::get() / HashMap::take() return invalid ObjectIdentifiers when the
key is missing
https://bugs.webkit.org/show_bug.cgi?id=281306
Reviewed by Darin Adler.
An ObjectIdentifier cannot be invalid/empty, we normally use
`std::optional<ObjectIdentifier>`
or `Markable<ObjectIdentifier>` to represent an invalid/empty identifier. The
only way to
construct an "empty" ObjectIdentifier is via
`HashTraits<ObjectIdentifier>::emptyValue()`,
which HashMap relies on internally. As long as the HashMap is only using this
special value
internally, this is fine. However, HashMap::get() and HashMap::take() will
return this
invalid "empty" value if the key is not present. This was very error-prone for
ObjectIdentifier since the client would receive an invalid ObjectIdentifier and
have no way
to check if the ObjectIdentifier is valid or not (since we assume an
ObjectIdentifier is
always valid).
To address the issue, Update HashMap::get() / HashMap::take() to return a
std::optional
when the value type is ObjectIdentifier.
* Source/WTF/wtf/HashMap.h:
(WTF::Y>::takeOptional):
* Source/WTF/wtf/ObjectIdentifier.h:
* Source/WebCore/workers/service/server/SWServer.cpp:
(WebCore::SWServer::matchAll):
Canonical link: https://commits.webkit.org/285080@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes