diff options
author | Tom Tromey <tom@tromey.com> | 2017-11-22 23:37:38 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-03-07 15:36:28 -0700 |
commit | e0d3522b888033febd153a4a7d3b7c5c13641f09 (patch) | |
tree | 9c5c11152ba3b7202fac5dba1a9f21a35c85d3d5 /gdb/inf-child.c | |
parent | d6ab64818b9d212691c200c292dc0f18d193598c (diff) | |
download | gdb-e0d3522b888033febd153a4a7d3b7c5c13641f09.zip gdb-e0d3522b888033febd153a4a7d3b7c5c13641f09.tar.gz gdb-e0d3522b888033febd153a4a7d3b7c5c13641f09.tar.bz2 |
Return gdb::optional<std::string> from target_fileio_readlink
This changes to_fileio_readlink and target_fileio_readlink to return a
gdb::optional<std::sring>, and then fixes up the callers and
implementations. This allows the removal of some cleanups.
Regression tested by the buildbot.
gdb/ChangeLog
2018-03-07 Tom Tromey <tom@tromey.com>
* linux-tdep.c (linux_info_proc): Update.
* target.h (struct target_ops) <to_fileio_readlink>: Return
optional<string>.
(target_fileio_readlink): Return optional<string>.
* remote.c (remote_hostio_readlink): Return optional<string>.
* inf-child.c (inf_child_fileio_readlink): Return
optional<string>.
* target.c (target_fileio_readlink): Return optional<string>.
Diffstat (limited to 'gdb/inf-child.c')
-rw-r--r-- | gdb/inf-child.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/gdb/inf-child.c b/gdb/inf-child.c index 6875596..c7c4553 100644 --- a/gdb/inf-child.c +++ b/gdb/inf-child.c @@ -333,7 +333,7 @@ inf_child_fileio_unlink (struct target_ops *self, /* Implementation of to_fileio_readlink. */ -static char * +static gdb::optional<std::string> inf_child_fileio_readlink (struct target_ops *self, struct inferior *inf, const char *filename, int *target_errno) @@ -343,22 +343,18 @@ inf_child_fileio_readlink (struct target_ops *self, #if defined (PATH_MAX) char buf[PATH_MAX]; int len; - char *ret; len = readlink (filename, buf, sizeof buf); if (len < 0) { *target_errno = host_to_fileio_error (errno); - return NULL; + return {}; } - ret = (char *) xmalloc (len + 1); - memcpy (ret, buf, len); - ret[len] = '\0'; - return ret; + return std::string (buf, len); #else *target_errno = FILEIO_ENOSYS; - return NULL; + return {}; #endif } |