From: Tom Tromey Date: Fri, 16 Mar 2018 23:02:11 +0000 (-0600) Subject: Change auto_load_objfile_script_1 to use std::string X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a06ab151cbab6f3da8735d2e5e06ede9454ca4c1;p=binutils-gdb.git 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 * auto-load.c (auto_load_objfile_script_1): Use std::string. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 086d1175d4a..4ab82d82a41 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2018-03-17 Tom Tromey + + * auto-load.c (auto_load_objfile_script_1): Use std::string. + 2018-03-17 Tom Tromey * target.c (class scoped_target_fd): New. diff --git a/gdb/auto-load.c b/gdb/auto-load.c index 70bddbc862b..09ecb87e139 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 &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; }