cmGlobalGenerator: Teach EscapeJSON to escape newlines and tabs

This commit is contained in:
Yan Pashkovsky
2018-12-14 18:23:20 +03:00
parent 1763f04281
commit 7583f7490e

View File

@@ -3014,11 +3014,23 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target)
std::string cmGlobalGenerator::EscapeJSON(const std::string& s) std::string cmGlobalGenerator::EscapeJSON(const std::string& s)
{ {
std::string result; std::string result;
result.reserve(s.size());
for (char i : s) { for (char i : s) {
if (i == '"' || i == '\\') { switch (i) {
result += '\\'; case '"':
case '\\':
result += '\\';
result += i;
break;
case '\n':
result += "\\n";
break;
case '\t':
result += "\\t";
break;
default:
result += i;
} }
result += i;
} }
return result; return result;
} }