From 03c85b11b07452f2d7341b405a7fe70c74226505 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 2 Feb 2017 20:58:12 -0700 Subject: Use std::string in Rust code This changes a couple of spots in the Rust support to use std::string. In one spot this removes some manual memory management; in the other spot this allows the removal of a call to xstrdup. 2017-02-02 Tom Tromey * rust-lang.h (rust_crate_for_block): Update. * rust-lang.c (rust_crate_for_block): Return std::string. (rust_get_disr_info): Use std:;string, not gdb::unique_xmalloc_ptr. * rust-exp.y (crate_name): Update. --- gdb/rust-lang.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'gdb/rust-lang.c') diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index dd72cd9..17df6bb 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -51,19 +51,17 @@ rust_last_path_segment (const char * path) return result + 1; } -/* Find the Rust crate for BLOCK. If no crate can be found, returns - NULL. Otherwise, returns a newly allocated string that the caller - is responsible for freeing. */ +/* See rust-lang.h. */ -char * +std::string rust_crate_for_block (const struct block *block) { const char *scope = block_scope (block); if (scope[0] == '\0') - return NULL; + return std::string (); - return xstrndup (scope, cp_find_first_component (scope)); + return std::string (scope, cp_find_first_component (scope)); } /* Information about the discriminant/variant of an enum */ @@ -157,8 +155,8 @@ rust_get_disr_info (struct type *type, const gdb_byte *valaddr, /* Optimized enums have only one field. */ member_type = TYPE_FIELD_TYPE (type, 0); - gdb::unique_xmalloc_ptr name (xstrdup (TYPE_FIELD_NAME (type, 0))); - tail = name.get () + strlen (RUST_ENUM_PREFIX); + std::string name (TYPE_FIELD_NAME (type, 0)); + tail = &name[0] + strlen (RUST_ENUM_PREFIX); /* The location of the value that doubles as a discriminant is stored in the name of the field, as -- cgit v1.1