From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5831 invoked by alias); 30 Nov 2017 03:54:42 -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 5818 invoked by uid 89); 30 Nov 2017 03:54:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,KB_WAM_FROM_NAME_SINGLEWORD,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=Really X-HELO: smtp.polymtl.ca Received: from smtp.polymtl.ca (HELO smtp.polymtl.ca) (132.207.4.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 30 Nov 2017 03:54:40 +0000 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id vAU3sVor029085 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 29 Nov 2017 22:54:36 -0500 Received: by simark.ca (Postfix, from userid 112) id F34411E586; Wed, 29 Nov 2017 22:54:30 -0500 (EST) Received: from simark.ca (localhost [127.0.0.1]) by simark.ca (Postfix) with ESMTP id E8E571E4F2; Wed, 29 Nov 2017 22:54:19 -0500 (EST) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Thu, 30 Nov 2017 03:54:00 -0000 From: Simon Marchi To: Tom Tromey Cc: Simon Marchi , gdb-patches@sourceware.org Subject: Re: [RFA] C++-ify parser_state In-Reply-To: <878teov3zz.fsf@tromey.com> References: <20171126174047.23943-1-tom@tromey.com> <82650820-b9f1-c45f-2243-89b47ec00e59@ericsson.com> <878teov3zz.fsf@tromey.com> Message-ID: X-Sender: simon.marchi@polymtl.ca User-Agent: Roundcube Webmail/1.3.2 X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Thu, 30 Nov 2017 03:54:31 +0000 X-IsSubscribed: yes X-SW-Source: 2017-11/txt/msg00820.txt.bz2 On 2017-11-29 22:29, Tom Tromey wrote: >>>>>> "Simon" == Simon Marchi writes: > >>> + /* Ensure that we don't free it in the destructor. */ >>> + expout = nullptr; >>> + return result; > > Simon> If expout was an expression_up, we could just std::move it here, > and > Simon> wouldn't need an explicit destructor. > > I thought that looked somewhat difficult due to the use of xrealloc > when > growing the expression. > > Really, of course, the whole expression structure needs to be redone. > That's a big task though. Agreed. >>> - lang->la_post_parser (&ps.expout, void_context_p); >>> + lang->la_post_parser (&result, void_context_p); > > Simon> Passing a pointer or reference to the unique_ptr would allow > Simon> the implementations of la_post_parser to modify it directly, > Simon> and avoid the .release ().release (). > > I'll look into it. > The realloc thing may be an issue here as well. I think this should be enough (the commit on top): https://github.com/simark/binutils-gdb/commits/parser_state Simon