Use ui_file_as_string in gdb/python/
authorPedro Alves <palves@redhat.com>
Tue, 8 Nov 2016 15:26:45 +0000 (15:26 +0000)
committerPedro Alves <palves@redhat.com>
Tue, 8 Nov 2016 15:26:45 +0000 (15:26 +0000)
gdb/ChangeLog:
2016-11-08  Pedro Alves  <palves@redhat.com>

* python/py-arch.c (archpy_disassemble): Use ui_file_as_string and
std::string.
* python/py-breakpoint.c (bppy_get_commands): Use
ui_file_as_string and std::string.
* python/py-frame.c (frapy_str): Likewise.
* python/py-type.c (typy_str): Likewise.
* python/py-unwind.c (unwind_infopy_str): Likewise.
* python/py-value.c (valpy_str): Likewise.

gdb/ChangeLog
gdb/python/py-arch.c
gdb/python/py-breakpoint.c
gdb/python/py-frame.c
gdb/python/py-type.c
gdb/python/py-unwind.c
gdb/python/py-value.c

index 254893f94f616439e09d99aa283cd3f67879122c..bbd14b24a72e8e502b87a46163782ac713bc1e2f 100644 (file)
@@ -1,3 +1,14 @@
+2016-11-08  Pedro Alves  <palves@redhat.com>
+
+       * python/py-arch.c (archpy_disassemble): Use ui_file_as_string and
+       std::string.
+       * python/py-breakpoint.c (bppy_get_commands): Use
+       ui_file_as_string and std::string.
+       * python/py-frame.c (frapy_str): Likewise.
+       * python/py-type.c (typy_str): Likewise.
+       * python/py-unwind.c (unwind_infopy_str): Likewise.
+       * python/py-value.c (valpy_str): Likewise.
+
 2016-11-08  Pedro Alves  <palves@redhat.com>
 
        * printcmd.c (eval_command): Use ui_file_as_string and
index 4a2dcbf82ee68d86bc4d3fc021f4a0aa9e4a0cf2..60cc5a9dd2671512175287ec652219e61e58d60b 100644 (file)
@@ -198,7 +198,6 @@ archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
        || (end_obj == NULL && count_obj == NULL && pc == start);)
     {
       int insn_len = 0;
-      char *as = NULL;
       struct ui_file *memfile = mem_fileopen ();
       PyObject *insn_dict = PyDict_New ();
 
@@ -232,18 +231,20 @@ archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
         }
       END_CATCH
 
-      as = ui_file_xstrdup (memfile, NULL);
+      std::string as = ui_file_as_string (memfile);
+
       if (PyDict_SetItemString (insn_dict, "addr",
                                 gdb_py_long_from_ulongest (pc))
           || PyDict_SetItemString (insn_dict, "asm",
-                                   PyString_FromString (*as ? as : "<unknown>"))
+                                   PyString_FromString (!as.empty ()
+                                                       ? as.c_str ()
+                                                       : "<unknown>"))
           || PyDict_SetItemString (insn_dict, "length",
                                    PyInt_FromLong (insn_len)))
         {
           Py_DECREF (result_list);
 
           ui_file_delete (memfile);
-          xfree (as);
 
           return NULL;
         }
@@ -251,7 +252,6 @@ archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
       pc += insn_len;
       i++;
       ui_file_delete (memfile);
-      xfree (as);
     }
 
   return result_list;
index 80f5d1f8da0d47299433c5da62ae09dd6e23e98d..e61cbcddaf9eec17f13473eb5c486093322e4a34 100644 (file)
@@ -487,9 +487,8 @@ bppy_get_commands (PyObject *self, void *closure)
   struct breakpoint *bp = self_bp->bp;
   long length;
   struct ui_file *string_file;
-  struct cleanup *chain;
   PyObject *result;
-  char *cmdstr;
+  struct cleanup *chain;
 
   BPPY_REQUIRE_VALID (self_bp);
 
@@ -514,9 +513,8 @@ bppy_get_commands (PyObject *self, void *closure)
   END_CATCH
 
   ui_out_redirect (current_uiout, NULL);
-  cmdstr = ui_file_xstrdup (string_file, &length);
-  make_cleanup (xfree, cmdstr);
-  result = host_string_to_python_string (cmdstr);
+  std::string cmdstr = ui_file_as_string (string_file);
+  result = host_string_to_python_string (cmdstr.c_str ());
   do_cleanups (chain);
   return result;
 }
index 6bdac08579f3639ef47a1b524b63f039d42dd07b..a66f88555ff6096939c908b494143cb79f8a5e11 100644 (file)
@@ -80,17 +80,13 @@ frame_object_to_frame_info (PyObject *obj)
 static PyObject *
 frapy_str (PyObject *self)
 {
-  char *s;
   PyObject *result;
   struct ui_file *strfile;
 
   strfile = mem_fileopen ();
   fprint_frame_id (strfile, ((frame_object *) self)->frame_id);
-  s = ui_file_xstrdup (strfile, NULL);
-  result = PyString_FromString (s);
-  xfree (s);
-
-  return result;
+  std::string s = ui_file_as_string (strfile);
+  return PyString_FromString (s.c_str ());
 }
 
 /* Implementation of gdb.Frame.is_valid (self) -> Boolean.
index 03cc8d9ecad20bbcb2752c9b5091664ec79060ea..da9dadd2fb07be053d7c75660cd4a506144909d9 100644 (file)
@@ -1010,8 +1010,7 @@ typy_template_argument (PyObject *self, PyObject *args)
 static PyObject *
 typy_str (PyObject *self)
 {
-  char *thetype = NULL;
-  long length = 0;
+  std::string thetype;
   PyObject *result;
 
   TRY
@@ -1025,18 +1024,17 @@ typy_str (PyObject *self)
       LA_PRINT_TYPE (type_object_to_type (self), "", stb, -1, 0,
                     &type_print_raw_options);
 
-      thetype = ui_file_xstrdup (stb, &length);
+      thetype = ui_file_as_string (stb);
       do_cleanups (old_chain);
     }
   CATCH (except, RETURN_MASK_ALL)
     {
-      xfree (thetype);
       GDB_PY_HANDLE_EXCEPTION (except);
     }
   END_CATCH
 
-  result = PyUnicode_Decode (thetype, length, host_charset (), NULL);
-  xfree (thetype);
+  result = PyUnicode_Decode (thetype.c_str (), thetype.length (),
+                            host_charset (), NULL);
 
   return result;
 }
index 92ce13820823ec2b8640f4471a0211ca65d299db..64c3123c2fd2e6a067d7281156d8f821560826ac 100644 (file)
@@ -236,12 +236,9 @@ unwind_infopy_str (PyObject *self)
       }
     fprintf_unfiltered (strfile, ")");
   }
-  {
-    char *s = ui_file_xstrdup (strfile, NULL);
 
-    result = PyString_FromString (s);
-    xfree (s);
-  }
+  std::string s = ui_file_as_string (strfile);
+  result = PyString_FromString (s.c_str ());
   ui_file_delete (strfile);
   return result;
 }
index f8bf17af4592c2ef5f24b1baff33d66cd7316b42..926a09c8512df850168af886c2054cebbf532734 100644 (file)
@@ -896,7 +896,7 @@ valpy_call (PyObject *self, PyObject *args, PyObject *keywords)
 static PyObject *
 valpy_str (PyObject *self)
 {
-  char *s = NULL;
+  std::string s;
   PyObject *result;
   struct value_print_options opts;
 
@@ -910,7 +910,7 @@ valpy_str (PyObject *self)
 
       common_val_print (((value_object *) self)->value, stb, 0,
                        &opts, python_language);
-      s = ui_file_xstrdup (stb, NULL);
+      s = ui_file_as_string (stb);
 
       do_cleanups (old_chain);
     }
@@ -920,8 +920,7 @@ valpy_str (PyObject *self)
     }
   END_CATCH
 
-  result = PyUnicode_Decode (s, strlen (s), host_charset (), NULL);
-  xfree (s);
+  result = PyUnicode_Decode (s.c_str (), s.length (), host_charset (), NULL);
 
   return result;
 }