diff options
author | Pedro Alves <palves@redhat.com> | 2017-03-27 11:56:28 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-03-27 11:56:28 +0100 |
commit | d721ba37d8995b9c11a0b8eef0f4d2dc022f85aa (patch) | |
tree | 4b02c2c22c8aab9c8827eb924a020ba8001607e1 /gdb/utils.c | |
parent | 79b1d3cb362385c38af9cfb44c0c87b939711fbc (diff) | |
download | gdb-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.c | 10 |
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; } |