Fix crash on DeviceManager destruction Commands register for state changes, so they need to be destroyed first before the StateChangeQueue is destroyed. Change-Id: I06ed3d3f3841a8b03c2825547f0077f292ca6179
diff --git a/src/device_manager.cc b/src/device_manager.cc index c0b8e9a..f21f235 100644 --- a/src/device_manager.cc +++ b/src/device_manager.cc
@@ -33,9 +33,9 @@ provider::HttpServer* http_server, provider::Wifi* wifi, provider::Bluetooth* bluetooth) { - command_manager_ = std::make_shared<CommandManager>(); state_change_queue_.reset(new StateChangeQueue(kMaxStateChangeQueueSize)); state_manager_ = std::make_shared<StateManager>(state_change_queue_.get()); + command_manager_ = std::make_shared<CommandManager>(); std::unique_ptr<Config> config{new Config{config_store}}; config->Load();
diff --git a/src/device_manager.h b/src/device_manager.h index ccf8778..489404e 100644 --- a/src/device_manager.h +++ b/src/device_manager.h
@@ -77,9 +77,9 @@ provider::Wifi* wifi, provider::Bluetooth* bluetooth); - std::shared_ptr<CommandManager> command_manager_; std::unique_ptr<StateChangeQueue> state_change_queue_; std::shared_ptr<StateManager> state_manager_; + std::shared_ptr<CommandManager> command_manager_; std::unique_ptr<DeviceRegistrationInfo> device_info_; std::unique_ptr<BaseApiHandler> base_api_handler_; std::unique_ptr<privet::Manager> privet_;