This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA 03/23] Use gdb_file_up in find_and_open_script
- From: Pedro Alves <palves at redhat dot com>
- To: Tom Tromey <tom at tromey dot com>, gdb-patches at sourceware dot org
- Date: Fri, 2 Jun 2017 18:24:23 +0100
- Subject: Re: [RFA 03/23] Use gdb_file_up in find_and_open_script
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=palves at redhat dot com
- Dkim-filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8438E7FD43
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8438E7FD43
- References: <20170503224626.2818-1-tom@tromey.com> <20170503224626.2818-4-tom@tromey.com>
On 05/03/2017 11:46 PM, Tom Tromey wrote:
> This changes find_and_open_script to return a gdb_file_up. The result
> is also used to indicate whether the function succeeded, so the patch
> also removes the "streamp" argument; and finally, the type of the
> "full_path" argument is changed to remove more cleanups from the
> callers.
>
This is OK.
> -extern int find_and_open_script (const char *file, int search_path,
> - FILE **streamp, char **full_path);
> +extern gdb_file_up
> + find_and_open_script (const char *file, int search_path,
> + gdb::unique_xmalloc_ptr<char> *full_path);
>
Though I wonder whether using gdb::optional wouldn't look clearer:
/* The script that was opened. */
struct open_script
{
gdb_file_up stream;
gdb::unique_xmalloc_ptr<char> full_path;
};
gdb::optional<open_script>
find_and_open_script (const char *file, int search_path);
open_script opened = find_and_open_script (file, 1 /*search_path*/);
if (opened)
{
if (!file_is_auto_load_safe (res->full_path.get (),
_("auto-load: Loading %s script "
"\"%s\" from section \"%s\" of "
"objfile \"%s\".\n"),
ext_lang_name (language),
opened->full_path.get (),
section_name, objfile_name (objfile)))
opened.reset ();
}
...
/* If this file is not currently loaded, load it. */
if (opened && !in_hash_table)
sourcer (language, objfile, opened->stream, opened->full_path.get ());
}
Thanks,
Pedro Alves