diff options
author | Tom Tromey <tom@tromey.com> | 2018-03-16 17:02:11 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-03-17 13:28:56 -0600 |
commit | a06ab151cbab6f3da8735d2e5e06ede9454ca4c1 (patch) | |
tree | 550b9707d404b9b8d44bc28fa55b504c76077ce6 /gdb/auto-load.c | |
parent | 770623f79f7fdff38f62c641438759748cf3f138 (diff) | |
download | gdb-a06ab151cbab6f3da8735d2e5e06ede9454ca4c1.zip gdb-a06ab151cbab6f3da8735d2e5e06ede9454ca4c1.tar.gz gdb-a06ab151cbab6f3da8735d2e5e06ede9454ca4c1.tar.bz2 |
Change auto_load_objfile_script_1 to use std::string
This replaces some manual string manipulation in
auto_load_objfile_script_1 with std::string, simplifying the code and
allowing the removal of some cleanups.
Tested by the buildbot.
2018-03-17 Tom Tromey <tom@tromey.com>
* auto-load.c (auto_load_objfile_script_1): Use std::string.
Diffstat (limited to 'gdb/auto-load.c')
-rw-r--r-- | gdb/auto-load.c | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/gdb/auto-load.c b/gdb/auto-load.c index 70bddbc..09ecb87 100644 --- a/gdb/auto-load.c +++ b/gdb/auto-load.c @@ -769,24 +769,19 @@ static int auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, const struct extension_language_defn *language) { - char *filename, *debugfile; - int len, retval; - struct cleanup *cleanups; + const char *debugfile; + int retval; const char *suffix = ext_lang_auto_load_suffix (language); - len = strlen (realname); - filename = (char *) xmalloc (len + strlen (suffix) + 1); - memcpy (filename, realname, len); - strcpy (filename + len, suffix); + std::string filename = std::string (realname) + suffix; - cleanups = make_cleanup (xfree, filename); - - gdb_file_up input = gdb_fopen_cloexec (filename, "r"); - debugfile = filename; + gdb_file_up input = gdb_fopen_cloexec (filename.c_str (), "r"); + debugfile = filename.c_str (); if (debug_auto_load) fprintf_unfiltered (gdb_stdlog, _("auto-load: Attempted file \"%s\" %s.\n"), debugfile, input ? _("exists") : _("does not exist")); + std::string debugfile_holder; if (!input) { /* Also try the same file in a subdirectory of gdb's data @@ -802,14 +797,10 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, for (const gdb::unique_xmalloc_ptr<char> &dir : vec) { - debugfile = (char *) xmalloc (strlen (dir.get ()) - + strlen (filename) + 1); - strcpy (debugfile, dir.get ()); - /* FILENAME is absolute, so we don't need a "/" here. */ - strcat (debugfile, filename); + debugfile_holder = dir.get () + filename; + debugfile = debugfile_holder.c_str (); - make_cleanup (xfree, debugfile); input = gdb_fopen_cloexec (debugfile, "r"); if (debug_auto_load) fprintf_unfiltered (gdb_stdlog, _("auto-load: Attempted file " @@ -862,7 +853,6 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, else retval = 0; - do_cleanups (cleanups); return retval; } |