python/py-utils.c (host_string_to_python_string): New function.
authorDoug Evans <dje@google.com>
Wed, 30 Mar 2016 06:48:35 +0000 (23:48 -0700)
committerDoug Evans <dje@google.com>
Wed, 30 Mar 2016 06:48:35 +0000 (23:48 -0700)
gdb/ChangeLog:

* python/py-utils.c (host_string_to_python_string): New function.
* python/python-internal.h (host_string_to_python_string): Declare it.
* python/py-*.c (*): Update all calls to
PyString_Decode (str, strlen (str), host_charset (), NULL);
to use host_string_to_python_string instead.

gdb/ChangeLog
gdb/python/py-breakpoint.c
gdb/python/py-objfile.c
gdb/python/py-progspace.c
gdb/python/py-symtab.c
gdb/python/py-utils.c
gdb/python/python-internal.h
gdb/python/python.c

index f69458b82279a1e69bfbb93c376aa97a72f5e4c4..7d1429c6ffa1171db166698028492eba51089d88 100644 (file)
@@ -1,3 +1,11 @@
+2016-03-30  Doug Evans  <dje@google.com>
+
+       * python/py-utils.c (host_string_to_python_string): New function.
+       * python/python-internal.h (host_string_to_python_string): Declare it.
+       * python/py-*.c (*): Update all calls to
+       PyString_Decode (str, strlen (str), host_charset (), NULL);
+       to use host_string_to_python_string instead.
+
 2016-03-30  Marcin Koƛcielnicki  <koriakin@0x04.net>
 
        * remote.c (remote_check_symbols): Allocate own buffer for reply.
index 964ec6204fe8fba8181fc5bbd290d09342a591a4..611a41e182d8f9fb5228506c10e6b556f32f0631 100644 (file)
@@ -392,7 +392,7 @@ bppy_get_location (PyObject *self, void *closure)
   str = event_location_to_string (obj->bp->location);
   if (! str)
     str = "";
-  return PyString_Decode (str, strlen (str), host_charset (), NULL);
+  return host_string_to_python_string (str);
 }
 
 /* Python function to get the breakpoint expression.  */
@@ -414,7 +414,7 @@ bppy_get_expression (PyObject *self, void *closure)
   if (! str)
     str = "";
 
-  return PyString_Decode (str, strlen (str), host_charset (), NULL);
+  return host_string_to_python_string (str);
 }
 
 /* Python function to get the condition expression of a breakpoint.  */
@@ -430,7 +430,7 @@ bppy_get_condition (PyObject *self, void *closure)
   if (! str)
     Py_RETURN_NONE;
 
-  return PyString_Decode (str, strlen (str), host_charset (), NULL);
+  return host_string_to_python_string (str);
 }
 
 /* Returns 0 on success.  Returns -1 on error, with a python exception set.
@@ -515,7 +515,7 @@ bppy_get_commands (PyObject *self, void *closure)
   ui_out_redirect (current_uiout, NULL);
   cmdstr = ui_file_xstrdup (string_file, &length);
   make_cleanup (xfree, cmdstr);
-  result = PyString_Decode (cmdstr, strlen (cmdstr), host_charset (), NULL);
+  result = host_string_to_python_string (cmdstr);
   do_cleanups (chain);
   return result;
 }
index 89c15518172bb45dcbade7cb3042b748b89d3975..cd26c5b49cd1261b262828690be7d757b00134e2 100644 (file)
@@ -78,9 +78,7 @@ objfpy_get_filename (PyObject *self, void *closure)
   objfile_object *obj = (objfile_object *) self;
 
   if (obj->objfile)
-    return PyString_Decode (objfile_name (obj->objfile),
-                           strlen (objfile_name (obj->objfile)),
-                           host_charset (), NULL);
+    return host_string_to_python_string (objfile_name (obj->objfile));
   Py_RETURN_NONE;
 }
 
@@ -96,8 +94,7 @@ objfpy_get_username (PyObject *self, void *closure)
     {
       const char *username = obj->objfile->original_name;
 
-      return PyString_Decode (username, strlen (username),
-                             host_charset (), NULL);
+      return host_string_to_python_string (username);
     }
 
   Py_RETURN_NONE;
@@ -152,8 +149,7 @@ objfpy_get_build_id (PyObject *self, void *closure)
       char *hex_form = make_hex_string (build_id->data, build_id->size);
       PyObject *result;
 
-      result = PyString_Decode (hex_form, strlen (hex_form),
-                               host_charset (), NULL);
+      result = host_string_to_python_string (hex_form);
       xfree (hex_form);
       return result;
     }
index 62a5c7ad37b7d977379d75880f734250dab90729..e1258c76254c4568da6848a2e5f7d0e2396b3c2d 100644 (file)
@@ -71,9 +71,7 @@ pspy_get_filename (PyObject *self, void *closure)
       struct objfile *objfile = obj->pspace->symfile_object_file;
 
       if (objfile)
-       return PyString_Decode (objfile_name (objfile),
-                               strlen (objfile_name (objfile)),
-                               host_charset (), NULL);
+       return host_string_to_python_string (objfile_name (objfile));
     }
   Py_RETURN_NONE;
 }
index d08496969c10968fcac2a5e76bc966b65bdeed48..c3c94e55732d2827dcb18c020ff4fc5241f5c7ce 100644 (file)
@@ -108,8 +108,7 @@ stpy_get_filename (PyObject *self, void *closure)
   STPY_REQUIRE_VALID (self, symtab);
   filename = symtab_to_filename_for_display (symtab);
 
-  str_obj = PyString_Decode (filename, strlen (filename),
-                            host_charset (), NULL);
+  str_obj = host_string_to_python_string (filename);
   return str_obj;
 }
 
@@ -140,8 +139,7 @@ stpy_get_producer (PyObject *self, void *closure)
     {
       const char *producer = COMPUNIT_PRODUCER (cust);
 
-      return PyString_Decode (producer, strlen (producer),
-                             host_charset (), NULL);
+      return host_string_to_python_string (producer);
     }
 
   Py_RETURN_NONE;
@@ -157,7 +155,7 @@ stpy_fullname (PyObject *self, PyObject *args)
 
   fullname = symtab_to_fullname (symtab);
 
-  return PyString_Decode (fullname, strlen (fullname), host_charset (), NULL);
+  return host_string_to_python_string (fullname);
 }
 
 /* Implementation of gdb.Symtab.is_valid (self) -> Boolean.
index a7e79e3ac7204cfa13675353a636915cf83323a7..2e2121d6d687d4093e01f4a3658176eaf0d89663 100644 (file)
@@ -221,6 +221,14 @@ python_string_to_host_string (PyObject *obj)
   return result;
 }
 
+/* Convert a host string to a python string.  */
+
+PyObject *
+host_string_to_python_string (const char *str)
+{
+  return PyString_Decode (str, strlen (str), host_charset (), NULL);
+}
+
 /* Return true if OBJ is a Python string or unicode object, false
    otherwise.  */
 
index 731402be2fca9695a2493adfbb6274c259faf716..6a2619cd7166bf18cf9e743602ea4d52fb119613 100644 (file)
@@ -538,6 +538,7 @@ char *unicode_to_target_string (PyObject *unicode_str);
 char *python_string_to_target_string (PyObject *obj);
 PyObject *python_string_to_target_python_string (PyObject *obj);
 char *python_string_to_host_string (PyObject *obj);
+PyObject *host_string_to_python_string (const char *str);
 int gdbpy_is_string (PyObject *obj);
 char *gdbpy_obj_to_string (PyObject *obj);
 char *gdbpy_exception_to_string (PyObject *ptype, PyObject *pvalue);
index 7202105b5f6d74b6e62e33eb19bf4b17c75bcc83..84f05965e1f359a30c31aceb1040f980f47aaed9 100644 (file)
@@ -516,7 +516,7 @@ gdbpy_parameter_value (enum var_types type, void *var)
 
        if (! str)
          str = "";
-       return PyString_Decode (str, strlen (str), host_charset (), NULL);
+       return host_string_to_python_string (str);
       }
 
     case var_boolean:
@@ -706,7 +706,7 @@ gdbpy_solib_name (PyObject *self, PyObject *args)
 
   soname = solib_name_from_address (current_program_space, pc);
   if (soname)
-    str_obj = PyString_Decode (soname, strlen (soname), host_charset (), NULL);
+    str_obj = host_string_to_python_string (soname);
   else
     {
       str_obj = Py_None;