]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Replace dodgy use of const char* and memcpy with std::string.
authorPeter Powell <petpow@saberuk.com>
Mon, 20 May 2013 19:15:50 +0000 (20:15 +0100)
committerPeter Powell <petpow@saberuk.com>
Mon, 13 Oct 2014 18:15:58 +0000 (19:15 +0100)
This was backported from commit e01df63 in master.

src/users.cpp

index 91db5200a98b3b9fefa8db5cb0df5dd782942ec0..418f2c9aa3557f187e45eb189c892a07b154970c 100644 (file)
@@ -1321,26 +1321,19 @@ void User::SendText(const char *text, ...)
 
 void User::SendText(const std::string &LinePrefix, std::stringstream &TextStream)
 {
-       char line[MAXBUF];
-       int start_pos = LinePrefix.length();
-       int pos = start_pos;
-       memcpy(line, LinePrefix.data(), pos);
+       std::string line;
        std::string Word;
        while (TextStream >> Word)
        {
-               int len = Word.length();
-               if (pos + len + 12 > MAXBUF)
+               size_t lineLength = LinePrefix.length() + line.length() + Word.length() + 13;
+               if (lineLength > MAXBUF)
                {
-                       line[pos] = '\0';
-                       SendText(std::string(line));
-                       pos = start_pos;
+                       SendText(LinePrefix + line);
+                       line.clear();
                }
-               line[pos] = ' ';
-               memcpy(line + pos + 1, Word.data(), len);
-               pos += len + 1;
+               line += " " + Word;
        }
-       line[pos] = '\0';
-       SendText(std::string(line));
+       SendText(LinePrefix + line);
 }
 
 /* return 0 or 1 depending if users u and u2 share one or more common channels