aboutsummaryrefslogtreecommitdiff
path: root/gdb/utils.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2017-03-27 11:56:28 +0100
committerPedro Alves <palves@redhat.com>2017-03-27 11:56:28 +0100
commitd721ba37d8995b9c11a0b8eef0f4d2dc022f85aa (patch)
tree4b02c2c22c8aab9c8827eb924a020ba8001607e1 /gdb/utils.c
parent79b1d3cb362385c38af9cfb44c0c87b939711fbc (diff)
downloadgdb-d721ba37d8995b9c11a0b8eef0f4d2dc022f85aa.zip
gdb-d721ba37d8995b9c11a0b8eef0f4d2dc022f85aa.tar.gz
gdb-d721ba37d8995b9c11a0b8eef0f4d2dc022f85aa.tar.bz2
gdb: Make ldirname return a std::string
Eliminates several uses of cleanups. Tested on x86_64 Fedora 23 with Python 2 and 3. gdb/ChangeLog 2017-03-27 Pedro Alves <palves@redhat.com> * dwarf2read.c (struct file_and_directory): New. (dwarf2_get_dwz_file): Adjust to use std::string. (dw2_get_file_names_reader): Adjust to use file_and_directory. (find_file_and_directory): Adjust to return a file_and_directory object. (read_file_scope): Adjust to use file_and_directory. Remove make_cleanup/do_cleanups calls. (open_and_init_dwp_file): Adjust to use std::string. Remove make_cleanup/do_cleanups calls. * python/python.c (do_start_initialization): Adjust to ldirname returning a std::string. * utils.c (ldirname): Now returns a std::string. * utils.h (ldirname): Change return type to std::string. * xml-syscall.c (xml_init_syscalls_info): Adjust to ldirname returning a std::string. * xml-tdesc.c (file_read_description_xml): Likewise.
Diffstat (limited to 'gdb/utils.c')
-rw-r--r--gdb/utils.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/gdb/utils.c b/gdb/utils.c
index 27021a1..39798cc 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -2943,20 +2943,19 @@ dummy_obstack_deallocate (void *object, void *data)
/* Simple, portable version of dirname that does not modify its
argument. */
-char *
+std::string
ldirname (const char *filename)
{
+ std::string dirname;
const char *base = lbasename (filename);
- char *dirname;
while (base > filename && IS_DIR_SEPARATOR (base[-1]))
--base;
if (base == filename)
- return NULL;
+ return dirname;
- dirname = (char *) xmalloc (base - filename + 2);
- memcpy (dirname, filename, base - filename);
+ dirname = std::string (filename, base - filename);
/* On DOS based file systems, convert "d:foo" to "d:.", so that we
create "d:./bar" later instead of the (different) "d:/bar". */
@@ -2964,7 +2963,6 @@ ldirname (const char *filename)
&& !IS_DIR_SEPARATOR (filename[0]))
dirname[base++ - filename] = '.';
- dirname[base - filename] = '\0';
return dirname;
}