Fix core crash
[quassel.git] / src / core / ctcphandler.cpp
index 56f8b33..f67735f 100644 (file)
@@ -155,7 +155,7 @@ void CtcpHandler::parse(Message::Type messageType, const QString &prefix, const
       ctcpparam = QString();
     }
 
-    if(!_ignoreListManager->ctcpMatch(prefix, network()->networkName(), ctcpcmd.toUpper())) {
+    if(ctcpcmd.toUpper() == QLatin1String("ACTION") || !_ignoreListManager->ctcpMatch(prefix, network()->networkName(), ctcpcmd.toUpper())) {
       QString reply_;
       handle(ctcpcmd, Q_ARG(CtcpType, ctcptype), Q_ARG(QString, prefix), Q_ARG(QString, target), Q_ARG(QString, ctcpparam), Q_ARG(QString, reply_));
       if(ctcptype == CtcpQuery && !reply_.isNull()) {
@@ -198,13 +198,10 @@ void CtcpHandler::packedReply(const QString &bufname, const QList<QByteArray> &r
     answerSize += replies.at(i).size();
   }
 
-  QByteArray quotedReply(answerSize, 0);
-  int nextPos = 0;
-  QByteArray &reply = quotedReply;
+  QByteArray quotedReply;
+  quotedReply.reserve(answerSize);
   for(int i = 0; i < replies.count(); i++) {
-    reply = replies.at(i);
-    quotedReply.replace(nextPos, reply.size(), reply);
-    nextPos += reply.size();
+    quotedReply.append(replies.at(i));
   }
 
   params << serverEncode(bufname) << quotedReply;