aboutsummaryrefslogtreecommitdiff
path: root/gdb/compile
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-08-03 16:32:14 -0600
committerTom Tromey <tom@tromey.com>2017-08-22 09:30:10 -0600
commite3e41d588adbe26a6ca54338dd4915382d981a3e (patch)
tree82e4563027b5e460a017465c39ec252257fb591d /gdb/compile
parent0d999a6ef0f98b22430d70951408869864c979e0 (diff)
downloadgdb-e3e41d588adbe26a6ca54338dd4915382d981a3e.zip
gdb-e3e41d588adbe26a6ca54338dd4915382d981a3e.tar.gz
gdb-e3e41d588adbe26a6ca54338dd4915382d981a3e.tar.bz2
Change gdb_abspath to return a unique_xmalloc_ptr
This changes gdb_abspath to return a unique_xmalloc_ptr, and fixes up the callers. This allows the removal of a cleanup, and also puts ownership rules into the API, where they belong. ChangeLog 2017-08-22 Tom Tromey <tom@tromey.com> * compile/compile.c (compile_file_command): Use gdb::unique_xmalloc_ptr, std::string. * utils.c (gdb_abspath): Change return type. * source.c (openp): Update. * objfiles.c (allocate_objfile): Update. * main.c (set_gdb_data_directory): Update. * utils.h (gdb_abspath): Return a gdb::unique_xmalloc_ptr.
Diffstat (limited to 'gdb/compile')
-rw-r--r--gdb/compile/compile.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c
index bca7b57..91e084f 100644
--- a/gdb/compile/compile.c
+++ b/gdb/compile/compile.c
@@ -90,8 +90,6 @@ static void
compile_file_command (char *arg, int from_tty)
{
enum compile_i_scope_types scope = COMPILE_I_SIMPLE_SCOPE;
- char *buffer;
- struct cleanup *cleanup;
scoped_restore save_async = make_scoped_restore (&current_ui->async, 0);
@@ -115,12 +113,9 @@ compile_file_command (char *arg, int from_tty)
error (_("Unknown argument specified."));
arg = skip_spaces (arg);
- arg = gdb_abspath (arg);
- cleanup = make_cleanup (xfree, arg);
- buffer = xstrprintf ("#include \"%s\"\n", arg);
- make_cleanup (xfree, buffer);
- eval_compile_command (NULL, buffer, scope, NULL);
- do_cleanups (cleanup);
+ gdb::unique_xmalloc_ptr<char> abspath = gdb_abspath (arg);
+ std::string buffer = string_printf ("#include \"%s\"\n", abspath.get ());
+ eval_compile_command (NULL, buffer.c_str (), scope, NULL);
}
/* Handle the input from the 'compile code' command. The