Add a check if max atomic_shared_ptrs is reached.
[folly.git] / folly / concurrency / test / AtomicSharedPtrTest.cpp
index aa8c5434f424b1a49cb92ddc5aad96131c005b37..410e743f4f56e525d0b84d4feee95ddee42e88f8 100644 (file)
@@ -145,6 +145,17 @@ TEST(AtomicSharedPtr, AliasingConstructorTest) {
   EXPECT_EQ(2, d_count);
 }
 
+TEST(AtomicSharedPtr, MaxPtrs) {
+  shared_ptr<long> p(new long);
+  int max_atomic_shared_ptrs = 262144;
+  atomic_shared_ptr<long> ptrs[max_atomic_shared_ptrs];
+  for (int i = 0; i < max_atomic_shared_ptrs - 1; i++) {
+    ptrs[i].store(p);
+  }
+  atomic_shared_ptr<long> fail;
+  EXPECT_DEATH(fail.store(p), "");
+}
+
 TEST(AtomicSharedPtr, DeterministicTest) {
   DSched sched(DSched::uniform(FLAGS_seed));