From 9bd789919e5f539cc3b8c70fd25acf6d6631d268 Mon Sep 17 00:00:00 2001 From: =?utf8?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(+) 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 *); -- 2.20.1