mirror of
https://github.com/google/googletest.git
synced 2025-12-06 16:57:00 +08:00
fix multi construct for g_gmock_implicit_sequence when libgmock.a is linked to many shared library
Signed-off-by: arvin <icemanpeng@foxmail.com>
This commit is contained in:
parent
fa6de7f438
commit
1ae48fa1f1
@ -666,7 +666,7 @@ namespace internal {
|
||||
|
||||
// Points to the implicit sequence introduced by a living InSequence
|
||||
// object (if any) in the current thread or NULL.
|
||||
GTEST_API_ extern ThreadLocal<Sequence*> g_gmock_implicit_sequence;
|
||||
GTEST_API_ ThreadLocal<Sequence*>& GetGMockImplicitSequence(void);
|
||||
|
||||
// Base class for implementing expectations.
|
||||
//
|
||||
@ -1580,7 +1580,7 @@ class FunctionMocker<R(Args...)> final : public UntypedFunctionMockerBase {
|
||||
untyped_expectations_.push_back(untyped_expectation);
|
||||
|
||||
// Adds this expectation into the implicit sequence if there is one.
|
||||
Sequence* const implicit_sequence = g_gmock_implicit_sequence.get();
|
||||
Sequence* const implicit_sequence = GetGMockImplicitSequence().get();
|
||||
if (implicit_sequence != nullptr) {
|
||||
implicit_sequence->AddExpectation(Expectation(untyped_expectation));
|
||||
}
|
||||
|
||||
@ -277,7 +277,12 @@ void ExpectationBase::UntypedTimes(const Cardinality& a_cardinality) {
|
||||
|
||||
// Points to the implicit sequence introduced by a living InSequence
|
||||
// object (if any) in the current thread or NULL.
|
||||
GTEST_API_ ThreadLocal<Sequence*> g_gmock_implicit_sequence;
|
||||
|
||||
GTEST_API_ ThreadLocal<Sequence*>& GetGMockImplicitSequence(void)
|
||||
{
|
||||
static ThreadLocal<Sequence*> implicit_sequence;
|
||||
return implicit_sequence;
|
||||
}
|
||||
|
||||
// Reports an uninteresting call (whose description is in msg) in the
|
||||
// manner specified by 'reaction'.
|
||||
@ -768,8 +773,8 @@ void Sequence::AddExpectation(const Expectation& expectation) const {
|
||||
|
||||
// Creates the implicit sequence if there isn't one.
|
||||
InSequence::InSequence() {
|
||||
if (internal::g_gmock_implicit_sequence.get() == nullptr) {
|
||||
internal::g_gmock_implicit_sequence.set(new Sequence);
|
||||
if (internal::GetGMockImplicitSequence().get() == nullptr) {
|
||||
internal::GetGMockImplicitSequence().set(new Sequence);
|
||||
sequence_created_ = true;
|
||||
} else {
|
||||
sequence_created_ = false;
|
||||
@ -780,8 +785,8 @@ InSequence::InSequence() {
|
||||
// of this object.
|
||||
InSequence::~InSequence() {
|
||||
if (sequence_created_) {
|
||||
delete internal::g_gmock_implicit_sequence.get();
|
||||
internal::g_gmock_implicit_sequence.set(nullptr);
|
||||
delete internal::GetGMockImplicitSequence().get();
|
||||
internal::GetGMockImplicitSequence().set(nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user