From 9c5d8354dd8efff340a030c05f7beda03061cd0a Mon Sep 17 00:00:00 2001 From: testuser Date: Thu, 29 Jun 2017 17:24:51 -0700 Subject: [PATCH] Fix dbus re-init accessing deleted pointer As Colin King found, there is issue during reinit. thd_engine is deleted and then getting accessed. So store the parameters before deleting the thd_engine. --- src/thd_dbus_interface.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/thd_dbus_interface.cpp b/src/thd_dbus_interface.cpp index b8e4ab0..6d0265d 100644 --- a/src/thd_dbus_interface.cpp +++ b/src/thd_dbus_interface.cpp @@ -199,10 +199,6 @@ gboolean thd_dbus_interface_terminate(PrefObject *obj, GError **error) { gboolean thd_dbus_interface_reinit(PrefObject *obj, GError **error) { bool exclusive_control = false; - thd_engine->thd_engine_terminate(); - sleep(1); - delete thd_engine; - sleep(2); if (thd_engine->get_control_mode() == EXCLUSIVE) exclusive_control = true; @@ -211,6 +207,12 @@ gboolean thd_dbus_interface_reinit(PrefObject *obj, GError **error) { if (!config_file.empty()) conf_file = config_file.c_str(); + thd_engine->thd_engine_terminate(); + sleep(1); + delete thd_engine; + sleep(2); + + if (thd_engine_create_default_engine(true, exclusive_control, conf_file) != THD_SUCCESS) { return FALSE;