X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fctcphandler.cpp;h=10dfd9a6fcc1298685bb36c985aa6111832531df;hp=ec21f4ccd2c9a357e0cea1029d49bf9cb5caced6;hb=a5dfcc8ecf8b81025d24b3c5c816169e3e030ea4;hpb=bcc567f2559058f38ca8ffecf7ef4428483cb540 diff --git a/src/core/ctcphandler.cpp b/src/core/ctcphandler.cpp index ec21f4cc..10dfd9a6 100644 --- a/src/core/ctcphandler.cpp +++ b/src/core/ctcphandler.cpp @@ -24,15 +24,15 @@ #include "quassel.h" #include "util.h" -CtcpHandler::CtcpHandler(NetworkConnection *parent) +CtcpHandler::CtcpHandler(CoreNetwork *parent) : BasicHandler(parent), XDELIM("\001") { QByteArray MQUOTE = QByteArray("\020"); - ctcpMDequoteHash[MQUOTE + '0'] = QByteArray("\000"); - ctcpMDequoteHash[MQUOTE + 'n'] = QByteArray("\n"); - ctcpMDequoteHash[MQUOTE + 'r'] = QByteArray("\r"); + ctcpMDequoteHash[MQUOTE + '0'] = QByteArray(1, '\000'); + ctcpMDequoteHash[MQUOTE + 'n'] = QByteArray(1, '\n'); + ctcpMDequoteHash[MQUOTE + 'r'] = QByteArray(1, '\r'); ctcpMDequoteHash[MQUOTE + MQUOTE] = MQUOTE; QByteArray XQUOTE = QByteArray("\134"); @@ -42,8 +42,14 @@ CtcpHandler::CtcpHandler(NetworkConnection *parent) QByteArray CtcpHandler::lowLevelQuote(const QByteArray &message) { QByteArray quotedMessage = message; - QHash::const_iterator quoteIter = ctcpMDequoteHash.constBegin(); - while(quoteIter != ctcpMDequoteHash.constEnd()) { + + QHash quoteHash = ctcpMDequoteHash; + QByteArray MQUOTE = QByteArray("\020"); + quoteHash.remove(MQUOTE + MQUOTE); + quotedMessage.replace(MQUOTE, MQUOTE + MQUOTE); + + QHash::const_iterator quoteIter = quoteHash.constBegin(); + while(quoteIter != quoteHash.constEnd()) { quotedMessage.replace(quoteIter.value(), quoteIter.key()); quoteIter++; }