]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Crash fixes from nenolod
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 18 Mar 2008 23:54:33 +0000 (23:54 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 18 Mar 2008 23:54:33 +0000 (23:54 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9126 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_cap.cpp
src/modules/m_namesx.cpp

index 5673c7f62f2243000b5e8ded1b638ee87280c1ac..86f79103c90a244cee0268af52502352bb333138 100644 (file)
@@ -98,8 +98,13 @@ class CommandCAP : public Command
                        Event event((char*) &Data, (Module*)this->Creator, subcommand == "LS" ? "cap_ls" : "cap_list");
                        event.Send(this->ServerInstance);
 
-                       std::string Result = irc::stringjoiner(" ", Data.wanted, 0, Data.wanted.size() - 1).GetJoined();
-                       user->WriteServ("CAP * LS :%s", Result.c_str());
+                       std::string Result;
+                       if (Data.wanted.size() > 0)
+                               Result = irc::stringjoiner(" ", Data.wanted, 0, Data.wanted.size() - 1).GetJoined();
+                       else
+                               Result = "";
+
+                       user->WriteServ("CAP * %s :%s", subcommand.c_str(), Result.c_str());
                }
                else if (subcommand == "CLEAR")
                {
index a1ae48b7026acd7618c27b8738f5ca764b4b00ef..2e79d6a06ebbd534556cad3ffcbacd5c17e23088 100644 (file)
@@ -129,8 +129,8 @@ class ModuleNamesX : public Module
                        if ((it = std::find(data->wanted.begin(), data->wanted.end(), "multi-prefix")) != data->wanted.end())
                        {
                                // we can handle this, so ACK it, and remove it from the wanted list
-                               data->wanted.erase(it);
                                data->ack.push_back(*it);
+                               data->wanted.erase(it);
                                data->user->Extend("NAMESX",dummy);
                        }
                }
@@ -146,7 +146,7 @@ class ModuleNamesX : public Module
                        CapData *data = (CapData *) ev->GetData();
 
                        if (data->user->GetExt("NAMESX"))
-                               data->ack.push_back("multi-prefix");
+                               data->wanted.push_back("multi-prefix");
                }
 
                if (ev->GetEventID() == "cap_clear")