From a1b29a21c4bf583074931533b7b04ab8b9c693ab Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Tue, 19 May 2009 02:28:49 +0200 Subject: [PATCH] Filter some unicode control codes out of IRC messages U+FDD0 and U+FDD1 are for internal Qt use and might screw up some Qt widgets if used inappropriately. Hence, we filter them out of incoming messages. Thanks to Sho_ and the Konversation team for the heads-up! --- src/core/coresession.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index ef3b397b..9f210569 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -203,7 +203,14 @@ void CoreSession::msgFromClient(BufferInfo bufinfo, QString msg) { // ALL messages coming pass through these functions before going to the GUI. // So this is the perfect place for storing the backlog and log stuff. void CoreSession::recvMessageFromServer(NetworkId networkId, Message::Type type, BufferInfo::Type bufferType, - const QString &target, const QString &text, const QString &sender, Message::Flags flags) { + const QString &target, const QString &text_, const QString &sender, Message::Flags flags) { + + // U+FDD0 and U+FDD1 are special characters for Qt's text engine, specifically they mark the boundaries of + // text frames in a QTextDocument. This might lead to problems in widgets displaying QTextDocuments (such as + // KDE's notifications), hence we remove those just to be safe. + QString text = text_; + text.remove(QChar(0xfdd0)).remove(QChar(0xfdd1)); + _messageQueue << RawMessage(networkId, type, bufferType, target, text, sender, flags); if(!_processMessages) { _processMessages = true; -- 2.20.1