Use std::string in execute_script_contents
authorTom Tromey <tom@tromey.com>
Thu, 8 Feb 2018 19:06:44 +0000 (12:06 -0700)
committerTom Tromey <tom@tromey.com>
Fri, 9 Feb 2018 12:53:21 +0000 (05:53 -0700)
This changes execute_script_contents to use a std::string, allowing
the removal of a cleanup.

2018-02-09  Tom Tromey  <tom@tromey.com>

* auto-load.c (execute_script_contents): Use std::string.

gdb/ChangeLog
gdb/auto-load.c

index 3e5b324..adc3d19 100644 (file)
@@ -1,3 +1,7 @@
+2018-02-09  Tom Tromey  <tom@tromey.com>
+
+       * auto-load.c (execute_script_contents): Use std::string.
+
 2018-02-09  Joel Brobecker  <brobecker@adacore.com>
 
        * NEWS <Changes in GDB 8.1>: Clarify that "rbreak" is a new
index 30c8b89..1f3d366 100644 (file)
@@ -989,23 +989,21 @@ execute_script_contents (struct auto_load_pspace_info *pspace_info,
 {
   objfile_script_executor_func *executor;
   const char *newline, *script_text;
-  char *name;
+  const char *name;
   int is_safe, in_hash_table;
-  struct cleanup *cleanups;
-
-  cleanups = make_cleanup (null_cleanup, NULL);
 
   /* The first line of the script is the name of the script.
      It must not contain any kind of space character.  */
   name = NULL;
   newline = strchr (script, '\n');
+  std::string name_holder;
   if (newline != NULL)
     {
-      char *buf, *p;
+      const char *buf, *p;
 
       /* Put the name in a buffer and validate it.  */
-      buf = xstrndup (script, newline - script);
-      make_cleanup (xfree, buf);
+      name_holder = std::string (script, newline - script);
+      buf = name_holder.c_str ();
       for (p = buf; *p != '\0'; ++p)
        {
          if (isspace (*p))
@@ -1022,7 +1020,6 @@ execute_script_contents (struct auto_load_pspace_info *pspace_info,
 Missing/bad script name in entry at offset %u in section %s\n\
 of file %s."),
               offset, section_name, objfile_name (objfile));
-      do_cleanups (cleanups);
       return;
     }
   script_text = newline + 1;
@@ -1035,7 +1032,6 @@ of file %s."),
       maybe_print_unsupported_script_warning (pspace_info, objfile, language,
                                              section_name, offset);
       maybe_add_script_text (pspace_info, 0, name, language);
-      do_cleanups (cleanups);
       return;
     }
 
@@ -1043,7 +1039,6 @@ of file %s."),
   if (!ext_lang_auto_load_enabled (language))
     {
       /* No message is printed, just skip it.  */
-      do_cleanups (cleanups);
       return;
     }
 
@@ -1059,8 +1054,6 @@ of file %s."),
   /* If this file is not currently loaded, load it.  */
   if (is_safe && !in_hash_table)
     executor (language, objfile, name, script_text);
-
-  do_cleanups (cleanups);
 }
 
 /* Load scripts specified in OBJFILE.