diff options
author | kosak <kosak@google.com> | 2015-02-14 02:13:32 +0000 |
---|---|---|
committer | kosak <kosak@google.com> | 2015-02-14 02:13:32 +0000 |
commit | 8209a45e2484a7eecc31a20a6dc6b8fd423d0b87 (patch) | |
tree | 7aec0ef4659f22086b75246601d9e5272abf5f73 | |
parent | b215e30cadd11db7c9f378b57ffecce92aacce37 (diff) | |
download | googletest-8209a45e2484a7eecc31a20a6dc6b8fd423d0b87.tar.gz googletest-8209a45e2484a7eecc31a20a6dc6b8fd423d0b87.tar.bz2 googletest-8209a45e2484a7eecc31a20a6dc6b8fd423d0b87.zip |
Add asserts to prevent mysterious hangs in a non-thread-safe gmock build.
-rw-r--r-- | include/gtest/internal/gtest-linked_ptr.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/include/gtest/internal/gtest-linked_ptr.h b/include/gtest/internal/gtest-linked_ptr.h index b1362cd0..36029422 100644 --- a/include/gtest/internal/gtest-linked_ptr.h +++ b/include/gtest/internal/gtest-linked_ptr.h @@ -110,7 +110,12 @@ class linked_ptr_internal { MutexLock lock(&g_linked_ptr_mutex); linked_ptr_internal const* p = ptr; - while (p->next_ != ptr) p = p->next_; + while (p->next_ != ptr) { + assert(p->next_ != this && + "Trying to join() a linked ring we are already in. " + "Is GMock thread safety enabled?"); + p = p->next_; + } p->next_ = this; next_ = ptr; } @@ -123,7 +128,12 @@ class linked_ptr_internal { if (next_ == this) return true; linked_ptr_internal const* p = next_; - while (p->next_ != this) p = p->next_; + while (p->next_ != this) { + assert(p->next_ != next_ && + "Trying to depart() a linked ring we are not in. " + "Is GMock thread safety enabled?"); + p = p->next_; + } p->next_ = next_; return false; } |