From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7155 invoked by alias); 19 Jun 2017 16:13:13 -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 7129 invoked by uid 89); 19 Jun 2017 16:13:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=no 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; Mon, 19 Jun 2017 16:13:10 +0000 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9F00080481; Mon, 19 Jun 2017 16:13:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9F00080481 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=sergiodj@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 9F00080481 Received: from localhost (unused-10-15-17-193.yyz.redhat.com [10.15.17.193]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 75E8651B62; Mon, 19 Jun 2017 16:13:13 +0000 (UTC) From: Sergio Durigan Junior To: Pedro Alves Cc: GDB Patches , Simon Marchi Subject: Re: [PATCH v6] C++ify gdb/common/environ.c References: <20170413040455.23996-1-sergiodj@redhat.com> <20170619043531.32394-1-sergiodj@redhat.com> Date: Mon, 19 Jun 2017 16:13:00 -0000 In-Reply-To: (Pedro Alves's message of "Mon, 19 Jun 2017 15:25:54 +0100") Message-ID: <87bmpkx8fb.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg00524.txt.bz2 On Monday, June 19 2017, Pedro Alves wrote: > On 06/19/2017 05:35 AM, Sergio Durigan Junior wrote: >> +private: >> + /* A vector containing the environment variables. This is useful >> + for when we need to obtain a 'char **' with all the existing >> + variables. */ >> + std::vector m_environ_vector; >> +}; > > This "This is useful" comment doesn't seem to make much > sense here in isolation. What exactly is useful, and in comparison > to what else? Maybe you're referring to the choice of type of element > in the vector, say vs a unique_ptr. Please clarify the comment. As > is, it would sound like a comment more fit to the class'es intro > or to the envp() method. This is probably a leftover comment from a very early version. I removed the part about usefulness. > On 06/19/2017 05:35 AM, Sergio Durigan Junior wrote: >> else >> { >> - char **vector = environ_vector (current_inferior ()->environment); >> + char **envp = current_inferior ()->environment.envp (); >> >> - while (*vector) >> - { >> - puts_filtered (*vector++); >> - puts_filtered ("\n"); >> - } >> + if (envp != NULL) > > I suspect this NULL check here was only needed in the previous > version that mishandled empty environs. I can't see how it > makes sense now. If you still need it, then there's a bug > elsewhere. No, it is not needed anymore. Removed. >> + for (int idx = 0; envp[idx] != NULL; ++idx) >> + { >> + puts_filtered (envp[idx]); >> + puts_filtered ("\n"); >> + } >> } > > > >> + if (setenv ("GDB_SELFTEST_ENVIRON", "1", 1) != 0) >> + error ("Could not set environment variable for testing."); > > Missing _() around error's format string. Fixed. >> + >> + gdb_environ env; >> + >> + SELF_CHECK (env.envp ()[0] == NULL); >> + >> + SELF_CHECK (env.get ("PWD") == NULL); >> + env.set ("PWD", "test"); >> + env.unset ("PWD"); >> + > > Please add another > > SELF_CHECK (env.envp ()[0] == NULL); > > after the unset. I didn't spot any check making sure > that invariant holds after an unset. This invariant is not supposed to hold after every unset, only after a clear or after an unset that removes the only variable in the vector. Thanks, -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible http://sergiodj.net/