diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2017-09-16 14:19:31 +0200 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2017-09-16 14:19:31 +0200 |
commit | 5e1875543df7413d3cbc3831390445e347064b75 (patch) | |
tree | 215e09584279387448ae183671588f0bac07a1f6 /gdb/common/xml-utils.c | |
parent | c3d7b541fa920e6ecb0f06ffe1e0e3f070fa295d (diff) | |
download | binutils-5e1875543df7413d3cbc3831390445e347064b75.zip binutils-5e1875543df7413d3cbc3831390445e347064b75.tar.gz binutils-5e1875543df7413d3cbc3831390445e347064b75.tar.bz2 |
Make xml_escape_text return an std::string
This is a simple replacement, it allows removing some manual free'ing in
the callers.
gdb/ChangeLog:
* common/buffer.c (buffer_xml_printf): Adjust.
* common/xml-utils.c (xml_escape_text): Change return type to
std::string, update code accordingly.
* common/xml-utils.h (xml_escape_text): Change return type to
std::string.
* rs6000-aix-tdep.c (rs6000_aix_shared_library_to_xml): Adjust.
* windows-tdep.c (windows_xfer_shared_library): Adjust.
* unittests/xml-utils-selftests.c (test_xml_escape_text):
Adjust.
gdb/gdbserver/ChangeLog:
* linux-low.c (linux_qxfer_libraries_svr4): Adjust to change of
return type of xml_escape_text.
* server.c (emit_dll_description): Likewise.
Diffstat (limited to 'gdb/common/xml-utils.c')
-rw-r--r-- | gdb/common/xml-utils.c | 49 |
1 files changed, 11 insertions, 38 deletions
diff --git a/gdb/common/xml-utils.c b/gdb/common/xml-utils.c index b5fe442..c6dd2fb 100644 --- a/gdb/common/xml-utils.c +++ b/gdb/common/xml-utils.c @@ -20,64 +20,37 @@ #include "common-defs.h" #include "xml-utils.h" -/* Return a malloc allocated string with special characters from TEXT - replaced by entity references. */ +/* Return a string with special characters from TEXT replaced by entity + references. */ -char * +std::string xml_escape_text (const char *text) { - char *result; - int i, special; - - /* Compute the length of the result. */ - for (i = 0, special = 0; text[i] != '\0'; i++) - switch (text[i]) - { - case '\'': - case '\"': - special += 5; - break; - case '&': - special += 4; - break; - case '<': - case '>': - special += 3; - break; - default: - break; - } + std::string result; /* Expand the result. */ - result = (char *) xmalloc (i + special + 1); - for (i = 0, special = 0; text[i] != '\0'; i++) + for (int i = 0; text[i] != '\0'; i++) switch (text[i]) { case '\'': - strcpy (result + i + special, "'"); - special += 5; + result += "'"; break; case '\"': - strcpy (result + i + special, """); - special += 5; + result += """; break; case '&': - strcpy (result + i + special, "&"); - special += 4; + result += "&"; break; case '<': - strcpy (result + i + special, "<"); - special += 3; + result += "<"; break; case '>': - strcpy (result + i + special, ">"); - special += 3; + result += ">"; break; default: - result[i + special] = text[i]; + result += text[i]; break; } - result[i + special] = '\0'; return result; } |