summaryrefslogtreecommitdiffhomepage
path: root/logic
diff options
context:
space:
mode:
Diffstat (limited to 'logic')
-rw-r--r--logic/selected-libraries.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/logic/selected-libraries.cpp b/logic/selected-libraries.cpp
index 4a1a9f09..ffa3e496 100644
--- a/logic/selected-libraries.cpp
+++ b/logic/selected-libraries.cpp
@@ -1,4 +1,5 @@
#include "selected-libraries.hpp"
+#include "options/scoped.hpp"
#include <QDebug>
SelectedLibraries::SelectedLibraries(QFrame* frame, dylibptr t, dylibptr p, dylibptr f) :
@@ -7,19 +8,25 @@ SelectedLibraries::SelectedLibraries(QFrame* frame, dylibptr t, dylibptr p, dyli
pProtocol(nullptr),
correct(false)
{
+ using namespace options;
+
+ const bool prev_teardown_flag = opts::is_tracker_teardown();
+
+ opts::set_teardown_flag(true);
+
pProtocol = make_dylib_instance<IProtocol>(p);
if (!pProtocol)
{
qDebug() << "protocol dylib load failure";
- return;
+ goto end;
}
if(!pProtocol->correct())
{
qDebug() << "protocol load failure";
pProtocol = nullptr;
- return;
+ goto end;
}
pTracker = make_dylib_instance<ITracker>(t);
@@ -28,10 +35,12 @@ SelectedLibraries::SelectedLibraries(QFrame* frame, dylibptr t, dylibptr p, dyli
if (!pTracker)
{
qDebug() << "tracker dylib load failure";
- return;
+ goto end;
}
pTracker->start_tracker(frame);
correct = true;
+end:
+ opts::set_teardown_flag(prev_teardown_flag);
}