[RFA 03/23] Use gdb_file_up in find_and_open_script

Pedro Alves palves@redhat.com
Fri Jun 2 17:24:00 GMT 2017


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



More information about the Gdb-patches mailing list