diff --git a/include/mbgl/util/thread.hpp b/include/mbgl/util/thread.hpp index 0e9bd8f75..ab0403e44 100644 --- a/include/mbgl/util/thread.hpp +++ b/include/mbgl/util/thread.hpp @@ -58,17 +58,21 @@ public: platform::makeThreadLowPriority(); platform::attachThread(); - util::RunLoop loop_(util::RunLoop::Type::New); - loop = &loop_; - EstablishedActor establishedActor(loop_, object, std::move(capturedArgs)); + // narrowing the scope to release the Object before we detach the thread + { + util::RunLoop loop_(util::RunLoop::Type::New); + loop = &loop_; + EstablishedActor establishedActor(loop_, object, std::move(capturedArgs)); + + runningPromise.set_value(); + + loop->run(); + + (void) establishedActor; + + loop = nullptr; + } - runningPromise.set_value(); - - loop->run(); - - (void) establishedActor; - - loop = nullptr; platform::detachThread(); }); }