Author: soliton
Date: Mon Apr 7 22:54:36 2008
New Revision: 25664
URL: http://svn.gna.org/viewcvs/wesnoth?rev=25664&view=rev
Log:
* avoid now unnecessary t_string creation and remove some code duplication
Modified:
branches/1.4/src/server/game.cpp
Modified: branches/1.4/src/server/game.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/branches/1.4/src/server/game.cpp?rev=25664&r1=25663&r2=25664&view=diff
==============================================================================
--- branches/1.4/src/server/game.cpp (original)
+++ branches/1.4/src/server/game.cpp Mon Apr 7 22:54:36 2008
@@ -35,12 +35,16 @@
namespace chat_message {
const size_t max_message_length = 256;
-static void truncate_message(t_string& str) {
- // The string send can contain utf-8 so truncate as wide_string
otherwise
- // an corrupted utf-8 string can be returned.
- std::string tmp = str.str();
- utils::truncate_as_wstring(tmp, max_message_length);
- str = tmp;
+static void truncate_message(const simple_wml::string_span& str,
simple_wml::node& message) {
+ // testing for msg.size() is not sufficient but we're not getting false
negatives
+ // and it's cheaper than always converting to wstring.
+ if(str.size() > chat_message::max_message_length) {
+ std::string tmp(str.begin(), str.end());
+ // The string can contain utf-8 characters so truncate as
wide_string otherwise
+ // a corrupted utf-8 string can be returned.
+ utils::truncate_as_wstring(tmp, max_message_length);
+ message.set_attr_dup("message", tmp.c_str());
+ }
}
} // end chat_message namespace
@@ -674,14 +678,11 @@
message->set_attr_dup("sender", user->second.name().c_str());
const simple_wml::string_span& msg = (*message)["message"];
- if(msg.size() > chat_message::max_message_length) {
- t_string str(msg.begin(), msg.end());
- chat_message::truncate_message(str);
- message->set_attr_dup("message", str.c_str());
- }
+ chat_message::truncate_message(msg, *message);
+
// Only log in the lobby_.
if (owner_ != 0) {
- } else if (msg.size() >= 3 && simple_wml::string_span(msg.begin(), 3)
== "/me") {
+ } else if (msg.size() >= 3 && simple_wml::string_span(msg.begin(), 4)
== "/me ") {
LOG_GAME << network::ip_address(user->first) << "\t<"
<< user->second.name() <<
simple_wml::string_span(msg.begin() + 3, msg.size() - 3) << ">\n";
} else {
@@ -753,11 +754,7 @@
}
const simple_wml::string_span& msg = speak["message"];
- if(msg.size() > chat_message::max_message_length) {
- t_string str(msg.begin(), msg.end());
- chat_message::truncate_message(str);
- speak.set_attr_dup("message", str.c_str());
- }
+ chat_message::truncate_message(msg, speak);
// Force the description to be correct,
// to prevent spoofing of messages.
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits