Add asserts to prevent mysterious hangs in a non-thread-safe gmock build.

This commit is contained in:
kosak 2015-02-14 02:13:32 +00:00
parent b215e30cad
commit 8209a45e24

View File

@ -110,7 +110,12 @@ class linked_ptr_internal {
MutexLock lock(&g_linked_ptr_mutex); MutexLock lock(&g_linked_ptr_mutex);
linked_ptr_internal const* p = ptr; 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; p->next_ = this;
next_ = ptr; next_ = ptr;
} }
@ -123,7 +128,12 @@ class linked_ptr_internal {
if (next_ == this) return true; if (next_ == this) return true;
linked_ptr_internal const* p = next_; 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_; p->next_ = next_;
return false; return false;
} }