Commit cf18a86f authored by Nick Terrell's avatar Nick Terrell Committed by Facebook Github Bot

Fix ConcurrentHashMap iterator copy

Summary:
UndefinedBehaviorSanitizer: null-pointer-use buck-out/dev-asan-ubsan/gen/folly/concurrency/concurrent_hash_map#header-mode-symlink-tree-with-header-map,headers/folly/concurrency/ConcurrentHashMap.h:440:30 in
Finished test run: https://our.intern.facebook.com/intern/testinfra/testrun/882372015
Summary (total time 1.49s):
  PASS: 0
  FAIL: 0
  SKIP: 0
  FATAL: 1
    folly/concurrency/test:concurrent_hash_map_test - ConcurrentHashMap.CopyIterator
  TIMEOUT: 0
  OMIT: 0
```

Reviewed By: djwatson

Differential Revision: D7003359

fbshipit-source-id: d6764caf2dfb1f19cf5b38a9e89d7c0583c75412
parent 83e410eb
......@@ -410,12 +410,14 @@ class ConcurrentHashMap {
}
ConstIterator& operator=(const ConstIterator& o) {
parent_ = o.parent_;
it_ = o.it_;
segment_ = o.segment_;
return *this;
}
ConstIterator(const ConstIterator& o) {
parent_ = o.parent_;
it_ = o.it_;
segment_ = o.segment_;
}
......
......@@ -257,6 +257,16 @@ TEST(ConcurrentHashMap, EraseTest) {
foomap.erase(f1);
}
TEST(ConcurrentHashMap, CopyIterator) {
ConcurrentHashMap<int, int> map;
map.insert(0, 0);
auto const cbegin = map.cbegin();
for (auto cit = cbegin; cit != map.cend(); ++cit) {
std::pair<int const, int> const ckv{0, 0};
EXPECT_EQ(*cit, ckv);
}
}
TEST(ConcurrentHashMap, EraseInIterateTest) {
ConcurrentHashMap<uint64_t, uint64_t> foomap(3);
for (uint64_t k = 0; k < 10; ++k) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment