aboutsummaryrefslogtreecommitdiff
path: root/gdb/cp-name-parser.y
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2017-08-09 15:04:32 +0100
committerPedro Alves <palves@redhat.com>2017-08-09 15:04:32 +0100
commit29592bde87d250ea56e8431053918899d3d0c16b (patch)
tree6dc7c4b6f29dcf555f17d7ad1f931e44331e7334 /gdb/cp-name-parser.y
parentb33404388e5bbd8a1fddfde73cd4593ae2b557e8 (diff)
downloadbinutils-29592bde87d250ea56e8431053918899d3d0c16b.zip
binutils-29592bde87d250ea56e8431053918899d3d0c16b.tar.gz
binutils-29592bde87d250ea56e8431053918899d3d0c16b.tar.bz2
Make cp_comp_to_string return a gdb::unique_xmalloc_ptr<char>
To help avoid issues like the one fixed by e88e8651cf34 ("Fix memory leak in cp-support.c"). gdb/ChangeLog: 2017-08-09 Pedro Alves <palves@redhat.com> * cp-name-parser.y (cp_comp_to_string): Return a gdb::unique_xmalloc_ptr<char>. * cp-support.c (replace_typedefs_qualified_name) (replace_typedefs): Adjust to use gdb::unique_xmalloc_ptr<char>. (cp_canonicalize_string_full): Use op= instead of explicit convertion. (cp_class_name_from_physname, method_name_from_physname) (cp_func_name, cp_remove_params): Adjust to use gdb::unique_xmalloc_ptr<char>. * cp-support.h (cp_comp_to_string): Return a gdb::unique_xmalloc_ptr<char>. * python/py-type.c (typy_lookup_type): Adjust to use gdb::unique_xmalloc_ptr<char>.
Diffstat (limited to 'gdb/cp-name-parser.y')
-rw-r--r--gdb/cp-name-parser.y7
1 files changed, 4 insertions, 3 deletions
diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y
index 78745cb..d430ae7 100644
--- a/gdb/cp-name-parser.y
+++ b/gdb/cp-name-parser.y
@@ -1963,13 +1963,14 @@ allocate_info (void)
cplus_demangle_print does not, specifically the global destructor
and constructor labels. */
-char *
+gdb::unique_xmalloc_ptr<char>
cp_comp_to_string (struct demangle_component *result, int estimated_len)
{
size_t err;
- return cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, result, estimated_len,
- &err);
+ char *res = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI,
+ result, estimated_len, &err);
+ return gdb::unique_xmalloc_ptr<char> (res);
}
/* Constructor for demangle_parse_info. */