summaryrefslogtreecommitdiff
path: root/src/users.cpp
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-10-13 20:37:38 +0200
committerAttila Molnar <attilamolnar@hush.com>2014-10-13 20:37:38 +0200
commitc8d3cce3a701f9f7786c5efecb457850d89edf6d (patch)
treefeebd06a5192da7fc3ff09c7d862e38d494ccaef /src/users.cpp
parent9bb839b6a2873a366ac8685c3c8846b6837f85ca (diff)
parentd8fe6df7a7bc385a80ae3fde0e9e4a2ac12d4af3 (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.cpp21
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