From 4df66c24b150453e529c6fc0002c6595432cb96a Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Jesper=20Thomsch=C3=BCtz?= Date: Sat, 14 Mar 2009 00:41:21 +0200 Subject: [PATCH] Catch recursion in message logger. --- src/client/client.cpp | 11 +++++++++++ src/client/client.h | 1 + 2 files changed, 12 insertions(+), 0 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index d90e7eb..2c5bc92 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -50,6 +50,11 @@ AccountId Client::_currentCoreAccount = 0; /*** Initialization/destruction ***/ +bool Client::instanceExists() +{ + return instanceptr; +} + Client *Client::instance() { if(!instanceptr) instanceptr = new Client(); @@ -467,6 +472,12 @@ void Client::logMessage(QtMsgType type, const char *msg) { Quassel::logFatalMessage(msg); } else { QString msgString = QString("%1\n").arg(msg); + + //Check to see if there is an instance around, else we risk recursions + //when calling instance() and creating new ones. + if (!instanceExists()) + return; + instance()->_debugLog << msgString; emit instance()->logUpdated(msgString); } diff --git a/src/client/client.h b/src/client/client.h index 3dd5b6a..4f7cbef 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -61,6 +61,7 @@ public: RemoteCore }; + static bool instanceExists(); static Client *instance(); static void destroy(); static void init(AbstractUi *); -- 1.5.6.3