diff options
Diffstat (limited to 'src/lib/util/xmlfile.cpp')
-rw-r--r-- | src/lib/util/xmlfile.cpp | 29 |
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, "<"); break; - case '>' : d += sprintf(d, ">"); break; - default: - *d++ = *string; - } - ++string; + case '\"': result.append("""); break; + case '&': result.append("&"); break; + case '<': result.append("<"); break; + case '>': result.append(">"); break; + default: result.append(1, ch); break; } } - *d++ = 0; - return buffer; + + return result; } |