Browse Source

Add more symbols to illegal for filenames

Ivan Savenko 1 year ago
parent
commit
6a624cbaf7
1 changed files with 9 additions and 2 deletions
  1. 9 2
      client/CPlayerInterface.cpp

+ 9 - 2
client/CPlayerInterface.cpp

@@ -244,8 +244,15 @@ void CPlayerInterface::performAutosave()
 				int txtlen = TextOperations::getUnicodeCharactersCount(name);
 
 				TextOperations::trimRightUnicode(name, std::max(0, txtlen - 15));
-				std::string forbiddenChars("\\/:*?\"<>| ");
-				std::replace_if(name.begin(), name.end(), [&](char c) { return std::string::npos != forbiddenChars.find(c); }, '_' );
+				auto const & isSymbolIllegal = [&](char c) {
+					static const std::string forbiddenChars("\\/:*?\"<>| ");
+
+					bool charForbidden = forbiddenChars.find(c) != std::string::npos;
+					bool charNonprintable = static_cast<unsigned char>(c) < static_cast<unsigned char>(' ');
+
+					return charForbidden || charNonprintable;
+				};
+				std::replace_if(name.begin(), name.end(), isSymbolIllegal, '_' );
 
 				prefix = name + "_" + cb->getStartInfo()->startTimeIso8601 + "/";
 			}