diff -ru konversation-old/konversation/src/konvdcop.cpp konversation-new/konversation/src/konvdcop.cpp --- konversation-old/konversation/src/konvdcop.cpp 2006-10-06 18:43:29.000000000 +0200 +++ konversation-new/konversation/src/konvdcop.cpp 2008-04-09 17:36:38.000000000 +0200 @@ -82,15 +82,23 @@ emit dcopMultiServerRaw("me " + message); } -void KonvDCOP::say(const QString& server,const QString& target,const QString& command) +void KonvDCOP::say(const QString& _server,const QString& _target,const QString& _command) { + //Sadly, copy on write doesn't exist with QString::replace + QString server(_server), target(_target), command(_command); + // TODO: this just masks a greater problem - Server::addQuery will return a query for '' --argonel // TODO: other DCOP calls need argument checking too --argonel if (server.isEmpty() || target.isEmpty() || command.isEmpty()) kdDebug() << "KonvDCOP::say() requires 3 arguments." << endl; else { - kdDebug() << "KonvDCOP::say()" << endl; + command.replace('\n',"\\n"); + command.replace('\r',"\\r"); + target.remove('\n'); + target.remove('\r'); + server.remove('\n'); + server.remove('\r'); // Act as if the user typed it emit dcopSay(server,target,command); }