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

Reply via email to