dwarf2read: Replace copy_string usages with savestring
[deliverable/binutils-gdb.git] / gdb / d-exp.y
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
This page took 0.026376 seconds and 4 git commands to generate.