Skip to content

Commit 27ca13d

Browse files
committed
Temporary fix for global c/d-tor issue (Bug 900609)
1 parent 7763d17 commit 27ca13d

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

Release/src/pplx/pplx.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ namespace details
7878
typedef ::pplx::scoped_lock<_Spin_lock> _Scoped_spin_lock;
7979
} // namespace details
8080

81-
82-
static std::shared_ptr<pplx::scheduler_interface> _M_Scheduler;
81+
static std::shared_ptr<pplx::scheduler_interface> *_M_Scheduler;
8382
static pplx::details::_Spin_lock _M_SpinLock;
8483

8584
_PPLXIMP std::shared_ptr<pplx::scheduler_interface> __cdecl get_ambient_scheduler()
@@ -89,11 +88,11 @@ _PPLXIMP std::shared_ptr<pplx::scheduler_interface> __cdecl get_ambient_schedule
8988
::pplx::details::_Scoped_spin_lock _Lock(_M_SpinLock);
9089
if (!_M_Scheduler)
9190
{
92-
_M_Scheduler = std::make_shared< ::pplx::default_scheduler_t>();
91+
_M_Scheduler = new std::shared_ptr<pplx::scheduler_interface>(std::make_shared< ::pplx::default_scheduler_t>());
9392
}
9493
}
9594

96-
return _M_Scheduler;
95+
return *_M_Scheduler;
9796
}
9897

9998
_PPLXIMP void __cdecl set_ambient_scheduler(std::shared_ptr<pplx::scheduler_interface> _Scheduler)
@@ -105,7 +104,7 @@ _PPLXIMP void __cdecl set_ambient_scheduler(std::shared_ptr<pplx::scheduler_inte
105104
throw invalid_operation("Scheduler is already initialized");
106105
}
107106

108-
_M_Scheduler = _Scheduler;
107+
_M_Scheduler = new std::shared_ptr<pplx::scheduler_interface>(std::move(_Scheduler));
109108
}
110109

111110
} // namespace pplx

0 commit comments

Comments
 (0)