|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
From 74138b9febd37eac0fc26b8efb110014a83a52c6 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
From: Jeremy Roman <jbroman@chromium.org>
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Date: Wed, 07 Aug 2019 13:26:48 +0000
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Subject: [PATCH] WTF: Make LinkedHashSet understand values for which memset initialization would be bad.
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Includes a unit test which fails before, and uses this to fix FontCacheKeyTraits.
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Bug: 980025
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Change-Id: If41f97444c7fd37b9b95d6dadaf3da5689079e9e
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1739948
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Reviewed-by: Kentaro Hara <haraken@chromium.org>
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Commit-Queue: Jeremy Roman <jbroman@chromium.org>
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Cr-Commit-Position: refs/heads/master@{#684731}
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
---
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
diff --git a/third_party/blink/renderer/platform/fonts/font_cache_key.h b/third_party/blink/renderer/platform/fonts/font_cache_key.h
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
index 0efc8fb..90063cb 100644
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
--- a/third_party/blink/renderer/platform/fonts/font_cache_key.h
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+++ b/third_party/blink/renderer/platform/fonts/font_cache_key.h
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
@@ -133,6 +133,10 @@
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
struct FontCacheKeyTraits : WTF::SimpleClassHashTraits<FontCacheKey> {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
STATIC_ONLY(FontCacheKeyTraits);
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ // std::string's empty state need not be zero in all implementations,
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ // and it is held within FontFaceCreationParams.
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ static const bool kEmptyValueIsZero = false;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
};
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
} // namespace blink
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
diff --git a/third_party/blink/renderer/platform/wtf/linked_hash_set.h b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
index b35b6e9..77e524c 100644
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
--- a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+++ b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
@@ -146,6 +146,11 @@
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
LinkedHashSetNodeBase* next)
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
: LinkedHashSetNodeBase(prev, next), value_(value) {}
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ LinkedHashSetNode(ValueArg&& value,
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ LinkedHashSetNodeBase* prev,
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ LinkedHashSetNodeBase* next)
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ : LinkedHashSetNodeBase(prev, next), value_(std::move(value)) {}
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
LinkedHashSetNode(LinkedHashSetNode&& other)
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
: LinkedHashSetNodeBase(std::move(other)),
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
value_(std::move(other.value_)) {}
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
@@ -445,10 +450,13 @@
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
// The slot is empty when the next_ field is zero so it's safe to zero
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
// the backing.
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
- static const bool kEmptyValueIsZero = true;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ static const bool kEmptyValueIsZero = ValueTraits::kEmptyValueIsZero;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
static const bool kHasIsEmptyValueFunction = true;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
static bool IsEmptyValue(const Node& node) { return !node.next_; }
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ static Node EmptyValue() {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ return Node(ValueTraits::EmptyValue(), nullptr, nullptr);
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
static const int kDeletedValue = -1;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
index 4c3f899..cd1be00 100644
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
--- a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+++ b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
@@ -487,6 +487,7 @@
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
};
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
struct Complicated {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ Complicated() : Complicated(0) {}
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Complicated(int value) : simple_(value) { objects_constructed_++; }
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Complicated(const Complicated& other) : simple_(other.simple_) {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
@@ -495,9 +496,6 @@
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
Simple simple_;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
static int objects_constructed_;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
-
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
- private:
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
- Complicated() = delete;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
};
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
int Complicated::objects_constructed_ = 0;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
@@ -731,4 +729,45 @@
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
} // anonymous namespace
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+// A unit type which objects to its state being initialized wrong.
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+struct InvalidZeroValue {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ InvalidZeroValue() = default;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ InvalidZeroValue(WTF::HashTableDeletedValueType) : deleted_(true) {}
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ ~InvalidZeroValue() { CHECK(ok_); }
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ bool IsHashTableDeletedValue() const { return deleted_; }
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ bool ok_ = true;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ bool deleted_ = false;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+};
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+template <>
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+struct HashTraits<InvalidZeroValue> : SimpleClassHashTraits<InvalidZeroValue> {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ static const bool kEmptyValueIsZero = false;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+};
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+template <>
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+struct DefaultHash<InvalidZeroValue> {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ struct Hash {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ static unsigned GetHash(const InvalidZeroValue&) { return 0; }
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ static bool Equal(const InvalidZeroValue&, const InvalidZeroValue&) {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ return true;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ };
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+};
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+template <typename Set>
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+class ListOrLinkedHashSetInvalidZeroTest : public testing::Test {};
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+using InvalidZeroValueSetTypes =
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ testing::Types<ListHashSet<InvalidZeroValue>,
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ ListHashSet<InvalidZeroValue, 1>,
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ LinkedHashSet<InvalidZeroValue>>;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+TYPED_TEST_SUITE(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValueSetTypes);
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+TYPED_TEST(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValue) {
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ using Set = TypeParam;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ Set set;
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+ set.insert(InvalidZeroValue());
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+}
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
+
|
|
![](https://seccdn.libravatar.org/avatar/d300c529067a535428930b809d592aab9b5ac1ce6ce02ade7815cadda3c3b1e5?s=16&d=retro) |
dacf053 |
} // namespace WTF
|