summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/xmlfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/util/xmlfile.cpp')
-rw-r--r--src/lib/util/xmlfile.cpp29
1 files changed, 12 insertions, 17 deletions
diff --git a/src/lib/util/xmlfile.cpp b/src/lib/util/xmlfile.cpp
index be7bab597ca..39604a29a87 100644
--- a/src/lib/util/xmlfile.cpp
+++ b/src/lib/util/xmlfile.cpp
@@ -782,29 +782,24 @@ void data_node::set_attribute_float(const char *name, float value)
// to ensure it doesn't contain embedded tags
//-------------------------------------------------
-const char *normalize_string(const char *string)
+std::string normalize_string(std::string_view string)
{
- static char buffer[1024];
- char *d = &buffer[0];
+ std::string result;
+ result.reserve(string.length());
- if (string != nullptr)
+ for (char ch : string)
{
- while (*string)
+ switch (ch)
{
- switch (*string)
- {
- case '\"' : d += sprintf(d, """); break;
- case '&' : d += sprintf(d, "&"); break;
- case '<' : d += sprintf(d, "&lt;"); break;
- case '>' : d += sprintf(d, "&gt;"); break;
- default:
- *d++ = *string;
- }
- ++string;
+ case '\"': result.append("&quot;"); break;
+ case '&': result.append("&amp;"); break;
+ case '<': result.append("&lt;"); break;
+ case '>': result.append("&gt;"); break;
+ default: result.append(1, ch); break;
}
}
- *d++ = 0;
- return buffer;
+
+ return result;
}