From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1879) id 1BAE3385800C; Wed, 15 Feb 2023 17:00:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1BAE3385800C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676480415; bh=xM+Z7fRlPW6EiQKZJx/JjFWQAoPHFp00Lg0wNXZWFZY=; h=From:To:Subject:Date:From; b=gaHSndx3ND10+fW2DGI8PAUCOlogmUfLOxvmhuyjK3Fl4+bzlqh0nAYLJC/H5+Hgr +fbSZeTp1taDoV/sG24tcxFxzE3Rro89MFvQqEOJpNDFYRmlRmkcH+RYUDM0ECUGU9 jttr+FGnJxzaqM1pVKfPl/KvKYABqHlwWsXI9Tsk= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Simon Marchi To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdb: use std::string for internalvar::name X-Act-Checkin: binutils-gdb X-Git-Author: Simon Marchi X-Git-Refname: refs/heads/master X-Git-Oldrev: 81b86eced24f905545b58aa6c27478104c364976 X-Git-Newrev: f251cb9bae76441b43b3ea0b030086052eb54524 Message-Id: <20230215170015.1BAE3385800C@sourceware.org> Date: Wed, 15 Feb 2023 17:00:15 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3Df251cb9bae76= 441b43b3ea0b030086052eb54524 commit f251cb9bae76441b43b3ea0b030086052eb54524 Author: Simon Marchi Date: Tue Feb 14 14:23:25 2023 -0500 gdb: use std::string for internalvar::name =20 Change internalvar::name to std::string, automating memory management. It becomes necessary to allocate internalvar with new instead of XNEW. =20 I didn't find how to trigger the code in complete_internalvar. It is called from condition_completer, so it should be by using the "condition" command, but I never managed to get in the right code path. =20 Change-Id: I814d61361663e7becb8f3fb5f58c0180cdc414bc Approved-By: Tom Tromey Diff: --- gdb/value.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gdb/value.c b/gdb/value.c index 6597d0fe4ef..4b3ec771266 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1830,7 +1830,7 @@ union internalvar_data struct internalvar { struct internalvar *next; - char *name; + std::string name; =20 /* We support various different kinds of content of an internal variable. enum internalvar_kind specifies the kind, and union internalvar_data @@ -1894,7 +1894,7 @@ lookup_only_internalvar (const char *name) struct internalvar *var; =20 for (var =3D internalvars; var; var =3D var->next) - if (strcmp (var->name, name) =3D=3D 0) + if (var->name =3D=3D name) return var; =20 return NULL; @@ -1912,8 +1912,8 @@ complete_internalvar (completion_tracker &tracker, co= nst char *name) len =3D strlen (name); =20 for (var =3D internalvars; var; var =3D var->next) - if (strncmp (var->name, name, len) =3D=3D 0) - tracker.add_completion (make_unique_xstrdup (var->name)); + if (var->name.compare (0, len, name) =3D=3D 0) + tracker.add_completion (make_unique_xstrdup (var->name.c_str ())); } =20 /* Create an internal variable with name NAME and with a void value. @@ -1922,9 +1922,9 @@ complete_internalvar (completion_tracker &tracker, co= nst char *name) struct internalvar * create_internalvar (const char *name) { - struct internalvar *var =3D XNEW (struct internalvar); + internalvar *var =3D new internalvar; =20 - var->name =3D xstrdup (name); + var->name =3D name; var->kind =3D INTERNALVAR_VOID; var->next =3D internalvars; internalvars =3D var; @@ -1996,7 +1996,7 @@ value_of_internalvar (struct gdbarch *gdbarch, struct= internalvar *var) =20 /* If there is a trace state variable of the same name, assume that is what we really want to see. */ - tsv =3D find_trace_state_variable (var->name); + tsv =3D find_trace_state_variable (var->name.c_str ()); if (tsv) { tsv->value_known =3D target_get_trace_state_variable_value (tsv->num= ber, @@ -2149,7 +2149,7 @@ set_internalvar (struct internalvar *var, struct valu= e *val) union internalvar_data new_data =3D { 0 }; =20 if (var->kind =3D=3D INTERNALVAR_FUNCTION && var->u.fn.canonical) - error (_("Cannot overwrite convenience function %s"), var->name); + error (_("Cannot overwrite convenience function %s"), var->name.c_str = ()); =20 /* Prepare new contents. */ switch (check_typedef (val->type ())->code ()) @@ -2261,7 +2261,7 @@ clear_internalvar (struct internalvar *var) const char * internalvar_name (const struct internalvar *var) { - return var->name; + return var->name.c_str (); } =20 static struct internal_function * @@ -2453,7 +2453,7 @@ show_convenience (const char *ignore, int from_tty) { varseen =3D 1; } - gdb_printf (("$%s =3D "), var->name); + gdb_printf (("$%s =3D "), var->name.c_str ()); =20 try {