diff --git a/src/util/string.h b/src/util/string.h
index 9f7b6673dd0869b1ce6c624aff41cb460f99826b..c983668a9827a290e8587aa3e3e6d28ef57cc27d 100644
--- a/src/util/string.h
+++ b/src/util/string.h
@@ -125,9 +125,10 @@ inline std::vector<std::string> str_split(const std::string &str, char delimiter
 
 inline std::string lowercase(const std::string &s)
 {
-	std::string s2;
+	std::string s2 = s;
 	for(size_t i = 0; i < s.size(); i++)
-		s2[i] = tolower(s.at(i));
+		if (isupper(s2.at(i)))
+			s2[i] = tolower(s2.at(i));
 	return s2;
 }