From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 115536 invoked by alias); 22 Sep 2016 19:03:00 -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 115521 invoked by uid 89); 22 Sep 2016 19:02:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.0 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= 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; Thu, 22 Sep 2016 19:02:58 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (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 D744AC09356B; Thu, 22 Sep 2016 19:02:56 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u8MJ2thI007851; Thu, 22 Sep 2016 15:02:56 -0400 Subject: Re: [RFA 3/5] Use std::string, std::vector in rust-lang.c To: Tom Tromey , gdb-patches@sourceware.org References: <1474566656-15389-1-git-send-email-tom@tromey.com> <1474566656-15389-4-git-send-email-tom@tromey.com> From: Pedro Alves Message-ID: <89b014ab-704c-bb8e-2e1a-6361efa5a644@redhat.com> Date: Thu, 22 Sep 2016 19:03:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <1474566656-15389-4-git-send-email-tom@tromey.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-09/txt/msg00292.txt.bz2 On 09/22/2016 06:50 PM, Tom Tromey wrote: > int num_args = exp->elts[*pos + 1].longconst; > const char *method; > - char *name; > + std::string name; While we required declaring variables at the top of the scope in C, in C++ it no longer makes sense. Particularly if the variable's type as a constructor. So I think we should move the variable declaration to the initialization line, to avoid default constructing the variable and then resetting it afterwards, as the compiler may not be smart enough to elide that. > > - name = concat (TYPE_TAG_NAME (type), "::", method, (char *) NULL); > - make_cleanup (xfree, name); > + name = std::string (TYPE_TAG_NAME (type)) + "::" + method; > > - char *scopedname = concat (scope, "::", name, (char *) NULL); > - struct cleanup *cleanup = make_cleanup (xfree, scopedname); > + std::string scopedname; > + > + scopedname = std::string (scope) + "::" + name; Here too. Throughout the series, really. Thanks, Pedro Alves