From: Peter Powell Date: Mon, 20 May 2013 19:15:50 +0000 (+0100) Subject: Replace dodgy use of const char* and memcpy with std::string. X-Git-Tag: v2.0.23~135^2~1 X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=ef335eb2de8e33550661c7dc826f471c3405c25f;hp=529d26bdafb033a3f90691d21f609067261bb953;p=user%2Fhenk%2Fcode%2Finspircd.git Replace dodgy use of const char* and memcpy with std::string. This was backported from commit e01df63 in master. --- diff --git a/src/users.cpp b/src/users.cpp index 91db5200a..418f2c9aa 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -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