gdb: Make ldirname return a std::string
[deliverable/binutils-gdb.git] / gdb / varobj.c
index 30dfb862d52aae1dc5af45235e33aa69b40a6606..f5d1cbf011ebbe91df755bf653fe1735a28f4e81 100644 (file)
@@ -724,7 +724,7 @@ varobj_clear_saved_item (struct varobj_dynamic *var)
   if (var->saved_item != NULL)
     {
       value_free (var->saved_item->value);
-      xfree (var->saved_item);
+      delete var->saved_item;
       var->saved_item = NULL;
     }
 }
@@ -799,7 +799,7 @@ update_dynamic_varobj_children (struct varobj *var,
                                 can_mention ? cchanged : NULL, i,
                                 item);
 
-         xfree (item);
+         delete item;
        }
       else
        {
@@ -1478,11 +1478,11 @@ varobj_set_visualizer (struct varobj *var, const char *visualizer)
   gdbpy_enter_varobj enter_py (var);
 
   mainmod = PyImport_AddModule ("__main__");
-  gdbpy_ref globals (PyModule_GetDict (mainmod));
+  gdbpy_ref<> globals (PyModule_GetDict (mainmod));
   Py_INCREF (globals.get ());
 
-  gdbpy_ref constructor (PyRun_String (visualizer, Py_eval_input,
-                                      globals.get (), globals.get ()));
+  gdbpy_ref<> constructor (PyRun_String (visualizer, Py_eval_input,
+                                        globals.get (), globals.get ()));
 
   if (constructor == NULL)
     {
@@ -2136,7 +2136,7 @@ varobj_get_value_type (const struct varobj *var)
 
   type = check_typedef (type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_REF)
+  if (TYPE_IS_REFERENCE (type))
     type = get_target_type (type);
 
   type = check_typedef (type);
@@ -2400,8 +2400,6 @@ varobj_value_get_print_value (struct value *value,
                              enum varobj_display_formats format,
                              const struct varobj *var)
 {
-  struct ui_file *stb;
-  struct cleanup *old_chain;
   struct value_print_options opts;
   struct type *type = NULL;
   long len = 0;
@@ -2413,9 +2411,7 @@ varobj_value_get_print_value (struct value *value,
   if (value == NULL)
     return std::string ();
 
-  stb = mem_fileopen ();
-  old_chain = make_cleanup_ui_file_delete (stb);
-
+  string_file stb;
   std::string thevalue;
 
 #if HAVE_PYTHON
@@ -2430,18 +2426,15 @@ varobj_value_get_print_value (struct value *value,
          /* First check to see if we have any children at all.  If so,
             we simply return {...}.  */
          if (dynamic_varobj_has_child_method (var))
-           {
-             do_cleanups (old_chain);
-             return xstrdup ("{...}");
-           }
+           return "{...}";
 
          if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
            {
              struct value *replacement;
 
-             gdbpy_ref output (apply_varobj_pretty_printer (value_formatter,
-                                                            &replacement,
-                                                            stb));
+             gdbpy_ref<> output (apply_varobj_pretty_printer (value_formatter,
+                                                              &replacement,
+                                                              &stb));
 
              /* If we have string like output ...  */
              if (output != NULL)
@@ -2484,10 +2477,7 @@ varobj_value_get_print_value (struct value *value,
                          type = builtin_type (gdbarch)->builtin_char;
 
                          if (!string_print)
-                           {
-                             do_cleanups (old_chain);
-                             return thevalue;
-                           }
+                           return thevalue;
                        }
                      else
                        gdbpy_print_stack ();
@@ -2507,20 +2497,17 @@ varobj_value_get_print_value (struct value *value,
 
   /* If the THEVALUE has contents, it is a regular string.  */
   if (!thevalue.empty ())
-    LA_PRINT_STRING (stb, type, (gdb_byte *) thevalue.c_str (),
+    LA_PRINT_STRING (&stb, type, (gdb_byte *) thevalue.c_str (),
                     len, encoding.get (), 0, &opts);
   else if (string_print)
     /* Otherwise, if string_print is set, and it is not a regular
        string, it is a lazy string.  */
-    val_print_string (type, encoding.get (), str_addr, len, stb, &opts);
+    val_print_string (type, encoding.get (), str_addr, len, &stb, &opts);
   else
     /* All other cases.  */
-    common_val_print (value, stb, 0, &opts, current_language);
-
-  thevalue = ui_file_as_string (stb);
+    common_val_print (value, &stb, 0, &opts, current_language);
 
-  do_cleanups (old_chain);
-  return thevalue;
+  return std::move (stb.string ());
 }
 
 int
This page took 0.024963 seconds and 4 git commands to generate.