diff options
author | pmuldoon <pmuldoon> | 2009-02-26 20:45:20 +0000 |
---|---|---|
committer | pmuldoon <pmuldoon> | 2009-02-26 20:45:20 +0000 |
commit | 285bd7c3eb50e65e2a9d8c6ca9cae859349fe90b (patch) | |
tree | 3a9bb545a56c1d11ce511594e20d18176c58b6b5 /gdb/python | |
parent | 8e336bc6b968e678de0b4baf968a5108e3cee9be (diff) | |
download | gdb-285bd7c3eb50e65e2a9d8c6ca9cae859349fe90b.tar.gz |
2009-02-26 Phil Muldoon <pmuldoon@redhat.com>
* python/python-utils.c (python_string_to_unicode): Always return
a new reference.
(python_string_to_target_string): Decrement transient python
instance.
(python_string_to_host_string): Likewise.
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/python-utils.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gdb/python/python-utils.c b/gdb/python/python-utils.c index b0ec7b34015..ddac2f5545c 100644 --- a/gdb/python/python-utils.c +++ b/gdb/python/python-utils.c @@ -81,7 +81,11 @@ python_string_to_unicode (PyObject *obj) /* If obj is already a unicode string, just return it. I wish life was always that simple... */ if (PyUnicode_Check (obj)) - unicode_str = obj; + { + unicode_str = obj; + Py_INCREF (obj); + } + else if (PyString_Check (obj)) unicode_str = PyUnicode_FromEncodedObject (obj, host_charset (), NULL); else @@ -136,12 +140,15 @@ char * python_string_to_target_string (PyObject *obj) { PyObject *str; + char *result; str = python_string_to_unicode (obj); if (str == NULL) return NULL; - return unicode_to_target_string (str); + result = unicode_to_target_string (str); + Py_DECREF (str); + return result; } /* Converts a python string (8-bit or unicode) to a target string in @@ -152,12 +159,15 @@ char * python_string_to_host_string (PyObject *obj) { PyObject *str; + char *result; str = python_string_to_unicode (obj); if (str == NULL) return NULL; - return unicode_to_encoded_string (str, host_charset ()); + result = unicode_to_encoded_string (str, host_charset ()); + Py_DECREF (str); + return result; } /* Converts a target string of LENGTH bytes in the target's charset to a |