aboutsummaryrefslogtreecommitdiff
path: root/gdb/utils.c
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/utils.c
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/utils.c')
-rw-r--r--gdb/utils.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/gdb/utils.c b/gdb/utils.c
index 96ae709..9959c01 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -2761,28 +2761,25 @@ gdb_realpath_keepfile (const char *filename)
/* Return PATH in absolute form, performing tilde-expansion if necessary.
PATH cannot be NULL or the empty string.
- This does not resolve symlinks however, use gdb_realpath for that.
- Space for the result is allocated with malloc.
- If the path is already absolute, it is strdup'd.
- If there is a problem computing the absolute path, the path is returned
- unchanged (still strdup'd). */
+ This does not resolve symlinks however, use gdb_realpath for that. */
-char *
+gdb::unique_xmalloc_ptr<char>
gdb_abspath (const char *path)
{
gdb_assert (path != NULL && path[0] != '\0');
if (path[0] == '~')
- return tilde_expand (path);
+ return gdb::unique_xmalloc_ptr<char> (tilde_expand (path));
if (IS_ABSOLUTE_PATH (path))
- return xstrdup (path);
+ return gdb::unique_xmalloc_ptr<char> (xstrdup (path));
/* Beware the // my son, the Emacs barfs, the botch that catch... */
- return concat (current_directory,
- IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
- ? "" : SLASH_STRING,
- path, (char *) NULL);
+ return gdb::unique_xmalloc_ptr<char>
+ (concat (current_directory,
+ IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
+ ? "" : SLASH_STRING,
+ path, (char *) NULL));
}
ULONGEST