From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14999 invoked by alias); 22 Sep 2016 17:51:20 -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 14721 invoked by uid 89); 22 Sep 2016 17:51:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.0 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=H*r:4.86_1, cleanups, H*F:U*tom, 6088 X-HELO: gproxy8-pub.mail.unifiedlayer.com Received: from gproxy8-pub.mail.unifiedlayer.com (HELO gproxy8-pub.mail.unifiedlayer.com) (67.222.33.93) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with SMTP; Thu, 22 Sep 2016 17:51:09 +0000 Received: (qmail 22796 invoked by uid 0); 22 Sep 2016 17:51:07 -0000 Received: from unknown (HELO CMOut01) (10.0.90.82) by gproxy8.mail.unifiedlayer.com with SMTP; 22 Sep 2016 17:51:07 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by CMOut01 with id mhqz1t00v2f2jeq01hr2Lh; Thu, 22 Sep 2016 11:51:05 -0600 X-Authority-Analysis: v=2.1 cv=OPq0g0qB c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=GW1xBdLrtEIA:10 a=zstS-IiYAAAA:8 a=s1g-JnNrsz_X0fBHR7cA:9 a=4G6NA9xxw8l3yy4pmD5M:22 Received: from 174-16-151-161.hlrn.qwest.net ([174.16.151.161]:51340 helo=bapiya.Home) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.86_1) (envelope-from ) id 1bn89F-0001Dg-0Y; Thu, 22 Sep 2016 11:51:01 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 2/5] Use std::string in cp-namespace.c Date: Thu, 22 Sep 2016 17:51:00 -0000 Message-Id: <1474566656-15389-3-git-send-email-tom@tromey.com> In-Reply-To: <1474566656-15389-1-git-send-email-tom@tromey.com> References: <1474566656-15389-1-git-send-email-tom@tromey.com> X-BWhitelist: no X-Exim-ID: 1bn89F-0001Dg-0Y X-Source-Sender: 174-16-151-161.hlrn.qwest.net (bapiya.Home) [174.16.151.161]:51340 X-Source-Auth: tom+tromey.com X-Email-Count: 3 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-SW-Source: 2016-09/txt/msg00287.txt.bz2 This changes a few spots in cp-namespace.c to use std::string, removing some cleanups. 2016-09-22 Tom Tromey * cp-namespace.c: Include . (cp_search_static_and_baseclasses) (cp_lookup_symbol_imports_or_template, find_symbol_in_baseclass): Use std::string. --- gdb/ChangeLog | 7 +++++++ gdb/cp-namespace.c | 51 +++++++++++++++++---------------------------------- 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f9924e5..2029bcb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2016-09-22 Tom Tromey + * cp-namespace.c: Include . + (cp_search_static_and_baseclasses) + (cp_lookup_symbol_imports_or_template, find_symbol_in_baseclass): + Use std::string. + +2016-09-22 Tom Tromey + * break-catch-sig.c: Include . (signal_catchpoint_print_one): Use std::string. diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index 0f1b452..1df59ae 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -32,6 +32,7 @@ #include "buildsym.h" #include "language.h" #include "namespace.h" +#include static struct block_symbol cp_lookup_nested_symbol_1 (struct type *container_type, @@ -246,8 +247,7 @@ cp_search_static_and_baseclasses (const char *name, int is_in_anonymous) { struct block_symbol sym; - char *klass, *nested; - struct cleanup *cleanup; + std::string klass, nested; struct block_symbol klass_sym; struct type *klass_type; @@ -258,36 +258,28 @@ cp_search_static_and_baseclasses (const char *name, /* Find the name of the class and the name of the method, variable, etc. */ /* The class name is everything up to and including PREFIX_LEN. */ - klass = savestring (name, prefix_len); + klass = std::string (name, prefix_len); /* The rest of the name is everything else past the initial scope operator. */ - nested = xstrdup (name + prefix_len + 2); - - /* Add cleanups to free memory for these strings. */ - cleanup = make_cleanup (xfree, klass); - make_cleanup (xfree, nested); + nested = name + prefix_len + 2; /* Lookup a class named KLASS. If none is found, there is nothing more that can be done. KLASS could be a namespace, so always look in VAR_DOMAIN. This works for classes too because of symbol_matches_domain (which should be replaced with something else, but it's what we have today). */ - klass_sym = lookup_global_symbol (klass, block, VAR_DOMAIN); + klass_sym = lookup_global_symbol (klass.c_str (), block, VAR_DOMAIN); if (klass_sym.symbol == NULL) - { - do_cleanups (cleanup); - return null_block_symbol; - } + return null_block_symbol; klass_type = SYMBOL_TYPE (klass_sym.symbol); /* Look for a symbol named NESTED in this class. The caller is assumed to have already have done a basic lookup of NAME. So we pass zero for BASIC_LOOKUP to cp_lookup_nested_symbol_1 here. */ - sym = cp_lookup_nested_symbol_1 (klass_type, nested, name, block, domain, - 0, is_in_anonymous); + sym = cp_lookup_nested_symbol_1 (klass_type, nested.c_str (), name, + block, domain, 0, is_in_anonymous); - do_cleanups (cleanup); return sym; } @@ -567,8 +559,7 @@ cp_lookup_symbol_imports_or_template (const char *scope, if (SYMBOL_NATURAL_NAME (function)) { struct type *context; - char *name_copy = xstrdup (SYMBOL_NATURAL_NAME (function)); - struct cleanup *cleanups = make_cleanup (xfree, name_copy); + std::string name_copy = SYMBOL_NATURAL_NAME (function); const struct language_defn *lang = language_def (language_cplus); struct gdbarch *arch = symbol_arch (function); const struct block *parent = BLOCK_SUPERBLOCK (block); @@ -576,15 +567,16 @@ cp_lookup_symbol_imports_or_template (const char *scope, while (1) { - unsigned int prefix_len = cp_entire_prefix_len (name_copy); + unsigned int prefix_len + = cp_entire_prefix_len (name_copy.c_str ()); if (prefix_len == 0) context = NULL; else { - name_copy[prefix_len] = '\0'; + name_copy.erase (prefix_len, name_copy.size ()); context = lookup_typename (lang, arch, - name_copy, + name_copy.c_str (), parent, 1); } @@ -597,7 +589,6 @@ cp_lookup_symbol_imports_or_template (const char *scope, TYPE_TEMPLATE_ARGUMENTS (context)); if (sym != NULL) { - do_cleanups (cleanups); if (symbol_lookup_debug) { fprintf_unfiltered @@ -608,8 +599,6 @@ cp_lookup_symbol_imports_or_template (const char *scope, return (struct block_symbol) {sym, parent}; } } - - do_cleanups (cleanups); } } @@ -832,34 +821,28 @@ find_symbol_in_baseclass (struct type *parent_type, const char *name, { int i; struct block_symbol sym; - struct cleanup *cleanup; - char *concatenated_name; sym.symbol = NULL; sym.block = NULL; - concatenated_name = NULL; - cleanup = make_cleanup (free_current_contents, &concatenated_name); for (i = 0; i < TYPE_N_BASECLASSES (parent_type); ++i) { - size_t len; struct type *base_type = TYPE_BASECLASS (parent_type, i); const char *base_name = TYPE_BASECLASS_NAME (parent_type, i); + std::string concatenated_name; if (base_name == NULL) continue; - len = strlen (base_name) + 2 + strlen (name) + 1; - concatenated_name = (char *) xrealloc (concatenated_name, len); - xsnprintf (concatenated_name, len, "%s::%s", base_name, name); + concatenated_name = std::string (base_name) + "::" + name; - sym = cp_lookup_nested_symbol_1 (base_type, name, concatenated_name, + sym = cp_lookup_nested_symbol_1 (base_type, name, + concatenated_name.c_str (), block, domain, 1, is_in_anonymous); if (sym.symbol != NULL) break; } - do_cleanups (cleanup); return sym; } -- 2.7.4