From 59ee2d9dc81b2ed89f073b1541fc8d8c4f1f28f8 Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Mon, 29 Jan 2024 11:21:34 +0100 Subject: Updated ChatLogger::secureName to fixed version Using the latest implementation from ManaPlus. Previous version was introduced with 844e9a7a72faca6a212e788a3adc45e17f41dca6 and failed to "secure" the name due to broken conditions. --- src/chatlogger.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'src/chatlogger.cpp') diff --git a/src/chatlogger.cpp b/src/chatlogger.cpp index e126b0ef..904da133 100644 --- a/src/chatlogger.cpp +++ b/src/chatlogger.cpp @@ -124,17 +124,27 @@ std::string ChatLogger::getDateString() const return date; } -std::string ChatLogger::secureName(std::string &name) const +std::string ChatLogger::secureName(std::string &name) { - for (char & f : name) + const size_t sz = name.length(); + for (size_t f = 0; f < sz; f ++) { - if (f < '0' && f > '9' && f < 'a' && f > 'z' - && f < 'A' && f > 'Z' - && f != '-' && f != '+' && f != '=' - && f != '.' && f != ','&& f != ')' - && f != '(' && f != '[' && f != ')') + const unsigned char ch = name[f]; + if ((ch < '0' || ch > '9') && + (ch < 'a' || ch > 'z') && + (ch < 'A' || ch > 'Z') && + ch != '-' && + ch != '+' && + ch != '=' && + ch != '.' && + ch != ',' && + ch != ')' && + ch != '(' && + ch != '[' && + ch != ']' && + ch != '#') { - f = '_'; + name[f] = '_'; } } return name; -- cgit v1.2.3-70-g09d2