Remove last cleanups from d-exp.y
authorTom Tromey <tom@tromey.com>
Sun, 13 Aug 2017 16:38:53 +0000 (10:38 -0600)
committerTom Tromey <tom@tromey.com>
Wed, 6 Sep 2017 21:49:31 +0000 (15:49 -0600)
This removes the last remaining cleanups from d-exp.y.

2017-09-05  Tom Tromey  <tom@tromey.com>

* d-exp.y (PrimaryExpression): Use std::string.
(d_parse): Don't create a cleanup.

gdb/ChangeLog
gdb/d-exp.y

index f3610239b2740454c7a9a05819e3ae9cf44d6010..c8ba539f053eb0864c1ed909eefed3d34df7c24d 100644 (file)
@@ -1,3 +1,8 @@
+2017-09-05  Tom Tromey  <tom@tromey.com>
+
+       * d-exp.y (PrimaryExpression): Use std::string.
+       (d_parse): Don't create a cleanup.
+
 2017-09-05  Tom Tromey  <tom@tromey.com>
 
        * utils.c (do_clear_parser_state): Remove.
index 9b773c65441b710bd3ad1bc72c5923206ed3e14b..00c96764d607535e1993da3b6cc38e867587a6ce 100644 (file)
@@ -470,15 +470,14 @@ PrimaryExpression:
                              struct block_symbol sym;
                              const char *type_name = TYPE_SAFE_NAME (type);
                              int type_name_len = strlen (type_name);
-                             char *name;
-
-                             name = xstrprintf ("%.*s.%.*s",
+                             std::string name
+                               = string_printf ("%.*s.%.*s",
                                                 type_name_len, type_name,
                                                 $3.length, $3.ptr);
-                             make_cleanup (xfree, name);
 
                              sym =
-                               lookup_symbol (name, (const struct block *) NULL,
+                               lookup_symbol (name.c_str (),
+                                              (const struct block *) NULL,
                                               VAR_DOMAIN, NULL);
                              if (sym.symbol)
                                {
@@ -489,13 +488,14 @@ PrimaryExpression:
                                  break;
                                }
 
-                             msymbol = lookup_bound_minimal_symbol (name);
+                             msymbol = lookup_bound_minimal_symbol (name.c_str ());
                              if (msymbol.minsym != NULL)
                                write_exp_msymbol (pstate, msymbol);
                              else if (!have_full_symbols () && !have_partial_symbols ())
                                error (_("No symbol table is loaded.  Use the \"file\" command."));
                              else
-                               error (_("No symbol \"%s\" in current context."), name);
+                               error (_("No symbol \"%s\" in current context."),
+                                      name.c_str ());
                            }
 
                          /* Check if the qualified name resolves as a member
@@ -1620,18 +1620,11 @@ yylex (void)
 int
 d_parse (struct parser_state *par_state)
 {
-  int result;
-  struct cleanup *back_to;
-
   /* Setting up the parser state.  */
   scoped_restore pstate_restore = make_scoped_restore (&pstate);
   gdb_assert (par_state != NULL);
   pstate = par_state;
 
-  /* Note that parsing (within yyparse) freely installs cleanups
-     assuming they're run here (below).  */
-  back_to = make_cleanup (null_cleanup, NULL);
-
   scoped_restore restore_yydebug = make_scoped_restore (&yydebug,
                                                        parser_debug);
 
@@ -1643,9 +1636,7 @@ d_parse (struct parser_state *par_state)
   popping = 0;
   name_obstack.clear ();
 
-  result = yyparse ();
-  do_cleanups (back_to);
-  return result;
+  return yyparse ();
 }
 
 void