Index: base/memory/scoped_ptr_unittest.cc |
diff --git a/base/memory/scoped_ptr_unittest.cc b/base/memory/scoped_ptr_unittest.cc |
index 766f4444001e828cd077ca39b85c7dd326779c65..2e27fcab306b1a83f47597690e5201c9dfbc85f3 100644 |
--- a/base/memory/scoped_ptr_unittest.cc |
+++ b/base/memory/scoped_ptr_unittest.cc |
@@ -693,3 +693,22 @@ TEST(ScopedPtrTest, LoggingDoesntConvertToBoolean) { |
EXPECT_EQ(s2.str(), s1.str()); |
} |
+ |
+TEST(ScopedPtrTest, ReferenceCycle) { |
+ struct StructB; |
+ struct StructA { |
+ scoped_ptr<StructB> b; |
+ }; |
+ |
+ struct StructB { |
+ scoped_ptr<StructA> a; |
+ }; |
+ |
+ // Create a reference cycle. |
+ StructA* a = new StructA; |
+ a->b.reset(new StructB); |
+ a->b->a.reset(a); |
+ |
+ // Break the cycle by calling |reset()|. |
Peter Kasting
2015/09/23 03:09:44
Nit: No || around function names
I might add to t
Anand Mistry (off Chromium)
2015/09/23 04:04:21
Done and done.
|
+ a->b.reset(); |
+} |