[1/9] Use htab_up in auto-load.c

Message ID 20200718172915.6811-2-tom@tromey.com
State New
Headers show
Series
  • Use htab_up in more places
Related show

Commit Message

Tom Tromey July 18, 2020, 5:29 p.m.
This changes auto-load.c to use htab_up, rather than manually calling
htab_delete.

gdb/ChangeLog
2020-07-18  Tom Tromey  <tom@tromey.com>

	* auto-load.c (struct auto_load_pspace_info)
	<~auto_load_pspace_info>: Default.
	<loaded_script_files, loaded_script_texts>: Change type to
	htab_up.
	(~auto_load_pspace_info) Remove.
	(init_loaded_scripts_info, maybe_add_script_file)
	(maybe_add_script_text, auto_load_info_scripts): Update.
---
 gdb/ChangeLog   | 10 ++++++++++
 gdb/auto-load.c | 40 +++++++++++++++++-----------------------
 2 files changed, 27 insertions(+), 23 deletions(-)

-- 
2.17.2

Comments

Simon Marchi July 20, 2020, 1:38 a.m. | #1
On 2020-07-18 1:29 p.m., Tom Tromey wrote:
> This changes auto-load.c to use htab_up, rather than manually calling

> htab_delete.

> 

> gdb/ChangeLog

> 2020-07-18  Tom Tromey  <tom@tromey.com>

> 

> 	* auto-load.c (struct auto_load_pspace_info)

> 	<~auto_load_pspace_info>: Default.

> 	<loaded_script_files, loaded_script_texts>: Change type to

> 	htab_up.

> 	(~auto_load_pspace_info) Remove.

> 	(init_loaded_scripts_info, maybe_add_script_file)

> 	(maybe_add_script_text, auto_load_info_scripts): Update.

> ---

>  gdb/ChangeLog   | 10 ++++++++++

>  gdb/auto-load.c | 40 +++++++++++++++++-----------------------

>  2 files changed, 27 insertions(+), 23 deletions(-)

> 

> diff --git a/gdb/auto-load.c b/gdb/auto-load.c

> index c967261925a..e21788f481f 100644

> --- a/gdb/auto-load.c

> +++ b/gdb/auto-load.c

> @@ -530,12 +530,12 @@ For more information about this security protection see the\n\

>  struct auto_load_pspace_info

>  {

>    auto_load_pspace_info () = default;

> -  ~auto_load_pspace_info ();

> +  ~auto_load_pspace_info () = default;


Can't these two just be removed?

Otherwise, LGTM.

Simon
Tom Tromey Sept. 17, 2020, 5:48 p.m. | #2
>>>>> "Simon" == Simon Marchi <simark@simark.ca> writes:


>> auto_load_pspace_info () = default;

>> -  ~auto_load_pspace_info ();

>> +  ~auto_load_pspace_info () = default;


Simon> Can't these two just be removed?

Simon> Otherwise, LGTM.

I made this change.

Tom

Patch

diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index c967261925a..e21788f481f 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -530,12 +530,12 @@  For more information about this security protection see the\n\
 struct auto_load_pspace_info
 {
   auto_load_pspace_info () = default;
-  ~auto_load_pspace_info ();
+  ~auto_load_pspace_info () = default;
 
   /* For each program space we keep track of loaded scripts, both when
      specified as file names and as scripts to be executed directly.  */
-  struct htab *loaded_script_files = nullptr;
-  struct htab *loaded_script_texts = nullptr;
+  htab_up loaded_script_files;
+  htab_up loaded_script_texts;
 
   /* Non-zero if we've issued the warning about an auto-load script not being
      supported.  We only want to issue this warning once.  */
@@ -567,14 +567,6 @@  struct loaded_script
 static const struct program_space_key<struct auto_load_pspace_info>
   auto_load_pspace_data;
 
-auto_load_pspace_info::~auto_load_pspace_info ()
-{
-  if (loaded_script_files)
-    htab_delete (loaded_script_files);
-  if (loaded_script_texts)
-    htab_delete (loaded_script_texts);
-}
-
 /* Get the current autoload data.  If none is found yet, add it now.  This
    function always returns a valid object.  */
 
@@ -621,14 +613,16 @@  init_loaded_scripts_info (struct auto_load_pspace_info *pspace_info)
      Space for each entry is obtained with one malloc so we can free them
      easily.  */
 
-  pspace_info->loaded_script_files = htab_create (31,
-						  hash_loaded_script_entry,
-						  eq_loaded_script_entry,
-						  xfree);
-  pspace_info->loaded_script_texts = htab_create (31,
-						  hash_loaded_script_entry,
-						  eq_loaded_script_entry,
-						  xfree);
+  pspace_info->loaded_script_files.reset
+    (htab_create (31,
+		  hash_loaded_script_entry,
+		  eq_loaded_script_entry,
+		  xfree));
+  pspace_info->loaded_script_texts.reset
+    (htab_create (31,
+		  hash_loaded_script_entry,
+		  eq_loaded_script_entry,
+		  xfree));
 
   pspace_info->unsupported_script_warning_printed = false;
   pspace_info->script_not_found_warning_printed = false;
@@ -660,7 +654,7 @@  maybe_add_script_file (struct auto_load_pspace_info *pspace_info, int loaded,
 		       const char *name, const char *full_path,
 		       const struct extension_language_defn *language)
 {
-  struct htab *htab = pspace_info->loaded_script_files;
+  struct htab *htab = pspace_info->loaded_script_files.get ();
   struct loaded_script **slot, entry;
   int in_hash_table;
 
@@ -708,7 +702,7 @@  maybe_add_script_text (struct auto_load_pspace_info *pspace_info,
 		       int loaded, const char *name,
 		       const struct extension_language_defn *language)
 {
-  struct htab *htab = pspace_info->loaded_script_texts;
+  struct htab *htab = pspace_info->loaded_script_texts.get ();
   struct loaded_script **slot, entry;
   int in_hash_table;
 
@@ -1299,7 +1293,7 @@  auto_load_info_scripts (const char *pattern, int from_tty,
       collect_matching_scripts_data data (&script_files, language);
 
       /* Pass a pointer to scripts as VEC_safe_push can realloc space.  */
-      htab_traverse_noresize (pspace_info->loaded_script_files,
+      htab_traverse_noresize (pspace_info->loaded_script_files.get (),
 			      collect_matching_scripts, &data);
 
       std::sort (script_files.begin (), script_files.end (),
@@ -1311,7 +1305,7 @@  auto_load_info_scripts (const char *pattern, int from_tty,
       collect_matching_scripts_data data (&script_texts, language);
 
       /* Pass a pointer to scripts as VEC_safe_push can realloc space.  */
-      htab_traverse_noresize (pspace_info->loaded_script_texts,
+      htab_traverse_noresize (pspace_info->loaded_script_texts.get (),
 			      collect_matching_scripts, &data);
 
       std::sort (script_texts.begin (), script_texts.end (),