diff options
author | Attila Molnar <attilamolnar@hush.com> | 2014-10-13 20:37:38 +0200 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2014-10-13 20:37:38 +0200 |
commit | c8d3cce3a701f9f7786c5efecb457850d89edf6d (patch) | |
tree | feebd06a5192da7fc3ff09c7d862e38d494ccaef /src/users.cpp | |
parent | 9bb839b6a2873a366ac8685c3c8846b6837f85ca (diff) | |
parent | d8fe6df7a7bc385a80ae3fde0e9e4a2ac12d4af3 (diff) |
Merge pull request #934 from SaberUK/insp20+fix-various-issues
Fix various issues detected by Coverity.
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 |