]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_quit.cpp
Fixed to dynamically allocate the fieldlist
[user/henk/code/inspircd.git] / src / cmd_quit.cpp
index e3529278caad2c15cf4788dfb3ff395e25913faf..5011d230e3f852c6f73cbddc2478fa2fc860d3dd 100644 (file)
@@ -34,7 +34,7 @@
 #include "helperfuncs.h"
 #include "hashcomp.h"
 #include "socketengine.h"
-#include "cmd_quit.h"
+#include "commands/cmd_quit.h"
 
 extern ServerConfig* Config;
 extern InspIRCd* ServerInstance;
@@ -47,10 +47,10 @@ extern chan_hash chanlist;
 extern std::vector<userrec*> local_users;
 extern userrec* fd_ref_table[MAX_DESCRIPTORS];
 
-void cmd_quit::Handle (char **parameters, int pcnt, userrec *user)
+void cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
 {
        user_hash::iterator iter = clientlist.find(user->nick);
-       char* reason;
+       char reason[MAXBUF];
 
        if (user->registered == 7)
        {
@@ -60,10 +60,7 @@ void cmd_quit::Handle (char **parameters, int pcnt, userrec *user)
                        if (*parameters[0] == ':')
                                parameters[0]++;
 
-                       reason = parameters[0];
-
-                       if (strlen(reason) > MAXQUIT)
-                               reason[MAXQUIT-1] = 0;
+                       strlcpy(reason, parameters[0],MAXQUIT-1);
 
                        /* We should only prefix the quit for a local user. Remote users have
                         * already been prefixed, where neccessary, by the upstream server.
@@ -117,5 +114,5 @@ void cmd_quit::Handle (char **parameters, int pcnt, userrec *user)
        }
        if (user->fd > -1)
                fd_ref_table[user->fd] = NULL;
-       delete user;
+       DELETE(user);
 }