Use RAII for crash handler setup/cleanup

Change-Id: I71205c45ee01eeaf1d2c991ec625f6a66be1e851
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2015-06-10 16:14:51 +02:00
parent 9554ef909f
commit 973fabc782
3 changed files with 10 additions and 8 deletions

View File

@@ -317,7 +317,7 @@ int main(int argc, char **argv)
const int threadCount = QThreadPool::globalInstance()->maxThreadCount();
QThreadPool::globalInstance()->setMaxThreadCount(qMax(4, 2 * threadCount));
setupCrashHandler(); // Display a backtrace once a serious signal is delivered.
CrashHandlerSetup setupCrashHandler; // Display a backtrace once a serious signal is delivered.
#ifdef ENABLE_QT_BREAKPAD
QtSystemExceptionHandler systemExceptionHandler;
@@ -518,7 +518,5 @@ int main(int argc, char **argv)
// shutdown plugin manager on the exit
QObject::connect(&app, SIGNAL(aboutToQuit()), &pluginManager, SLOT(shutdown()));
const int r = app.exec();
cleanupCrashHandler();
return r;
return app.exec();
}

View File

@@ -88,7 +88,7 @@ extern "C" void signalHandler(int signal)
}
#endif // BUILD_CRASH_HANDLER
void setupCrashHandler()
CrashHandlerSetup::CrashHandlerSetup()
{
#ifdef BUILD_CRASH_HANDLER
if (qgetenv("QTC_USE_CRASH_HANDLER").isEmpty())
@@ -138,7 +138,7 @@ void setupCrashHandler()
#endif // BUILD_CRASH_HANDLER
}
void cleanupCrashHandler()
CrashHandlerSetup::~CrashHandlerSetup()
{
#ifdef BUILD_CRASH_HANDLER
delete[] crashHandlerPathC;

View File

@@ -31,7 +31,11 @@
#ifndef CRASHHANDLERSETUP_H
#define CRASHHANDLERSETUP_H
void setupCrashHandler();
void cleanupCrashHandler();
class CrashHandlerSetup
{
public:
CrashHandlerSetup();
~CrashHandlerSetup();
};
#endif // CRASHHANDLERSETUP_H