diff options
author | Peter Powell <petpow@saberuk.com> | 2013-05-20 20:15:50 +0100 |
---|---|---|
committer | Peter Powell <petpow@saberuk.com> | 2014-10-13 19:15:58 +0100 |
commit | ef335eb2de8e33550661c7dc826f471c3405c25f (patch) | |
tree | c4ab4d8b872dd673ca4aed25aaf292575094b533 /src/users.cpp | |
parent | 529d26bdafb033a3f90691d21f609067261bb953 (diff) |
Replace dodgy use of const char* and memcpy with std::string.
This was backported from commit e01df63 in master.
Diffstat (limited to 'src/users.cpp')
-rw-r--r-- | src/users.cpp | 21 |
1 files changed, 7 insertions, 14 deletions
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 |