From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21825 invoked by alias); 19 Oct 2016 01:21:37 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 21759 invoked by uid 89); 19 Oct 2016 01:21:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=2526, 9097, 909,7, 5149 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 19 Oct 2016 01:21:35 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BB130C00B6E8 for ; Wed, 19 Oct 2016 01:12:36 +0000 (UTC) Received: from cascais.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u9J1CJjn019701 for ; Tue, 18 Oct 2016 21:12:36 -0400 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH v2 18/31] Use ui_file_as_string in gdb/python/ Date: Wed, 19 Oct 2016 01:21:00 -0000 Message-Id: <1476839539-8374-19-git-send-email-palves@redhat.com> In-Reply-To: <1476839539-8374-1-git-send-email-palves@redhat.com> References: <1476839539-8374-1-git-send-email-palves@redhat.com> X-SW-Source: 2016-10/txt/msg00553.txt.bz2 gdb/ChangeLog: yyyy-mm-yy Pedro Alves * 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/python/py-arch.c | 10 +++++----- gdb/python/py-breakpoint.c | 8 +++----- gdb/python/py-frame.c | 8 ++------ gdb/python/py-type.c | 10 ++++------ gdb/python/py-unwind.c | 7 ++----- gdb/python/py-value.c | 7 +++---- 6 files changed, 19 insertions(+), 31 deletions(-) diff --git a/gdb/python/py-arch.c b/gdb/python/py-arch.c index 4a2dcbf..60cc5a9 100644 --- a/gdb/python/py-arch.c +++ b/gdb/python/py-arch.c @@ -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 : "")) + PyString_FromString (!as.empty () + ? as.c_str () + : "")) || 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; diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c index 80f5d1f..e61cbcd 100644 --- a/gdb/python/py-breakpoint.c +++ b/gdb/python/py-breakpoint.c @@ -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; } diff --git a/gdb/python/py-frame.c b/gdb/python/py-frame.c index 6bdac08..a66f885 100644 --- a/gdb/python/py-frame.c +++ b/gdb/python/py-frame.c @@ -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. diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index 03cc8d9..da9dadd 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -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; } diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c index cc685ae..3963cd0 100644 --- a/gdb/python/py-unwind.c +++ b/gdb/python/py-unwind.c @@ -238,12 +238,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; } diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c index 46683b8..e326005 100644 --- a/gdb/python/py-value.c +++ b/gdb/python/py-value.c @@ -895,7 +895,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; @@ -909,7 +909,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); } @@ -919,8 +919,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; } -- 2.5.5