From: Jesper Thomschütz Date: Fri, 13 Mar 2009 22:41:21 +0000 (+0200) Subject: Catch recursion in message logger. X-Git-Tag: 0.5-rc1~287 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=9bd789919e5f539cc3b8c70fd25acf6d6631d268 Catch recursion in message logger. --- diff --git a/src/client/client.cpp b/src/client/client.cpp index c2a3e165..ca219bbd 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -51,6 +51,11 @@ AccountId Client::_currentCoreAccount = 0; /*** Initialization/destruction ***/ +bool Client::instanceExists() +{ + return instanceptr; +} + Client *Client::instance() { if(!instanceptr) instanceptr = new Client(); @@ -496,6 +501,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 3f5f79dd..2821ab98 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -62,6 +62,7 @@ public: RemoteCore }; + static bool instanceExists(); static Client *instance(); static void destroy(); static void init(AbstractUi *);