diff options
Diffstat (limited to 'logic')
-rw-r--r-- | logic/selected-libraries.cpp | 15 |
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); } |