Blob Blame History Raw
From 9c5d8354dd8efff340a030c05f7beda03061cd0a Mon Sep 17 00:00:00 2001
From: testuser <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;