From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 64145 invoked by alias); 18 Jan 2017 15:54:07 -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 63158 invoked by uid 89); 18 Jan 2017 15:54:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_SOFTFAIL autolearn=no version=3.3.2 spammy=theyd, they'd, HX-PHP-Originating-Script:rcube.php, H*u:1.2.3 X-HELO: simark.ca Received: from simark.ca (HELO simark.ca) (158.69.221.121) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 18 Jan 2017 15:54:05 +0000 Received: by simark.ca (Postfix, from userid 33) id EA77B1E16A; Wed, 18 Jan 2017 10:54:03 -0500 (EST) To: Luis Machado Subject: Re: [PATCH 1/6] New function null_stream X-PHP-Originating-Script: 33:rcube.php MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Wed, 18 Jan 2017 15:54:00 -0000 From: Simon Marchi Cc: Yao Qi , gdb-patches@sourceware.org In-Reply-To: <25ec0b5e-0d11-35c7-099a-243284c6be6f@codesourcery.com> References: <1484051178-16013-1-git-send-email-yao.qi@linaro.org> <1484560977-8693-1-git-send-email-yao.qi@linaro.org> <1484560977-8693-2-git-send-email-yao.qi@linaro.org> <20170118144506.GM28060@E107787-LIN> <79d15965-fd1c-5cff-54f1-d6b7d2e6b884@codesourcery.com> <2b52597c046b688cca11d55ac12cfb04@polymtl.ca> <70308951-95e4-a628-0a71-1526f2963640@codesourcery.com> <25ec0b5e-0d11-35c7-099a-243284c6be6f@codesourcery.com> Message-ID: X-Sender: simon.marchi@polymtl.ca User-Agent: Roundcube Webmail/1.2.3 X-IsSubscribed: yes X-SW-Source: 2017-01/txt/msg00357.txt.bz2 On 2017-01-18 10:28, Luis Machado wrote: > That is perfectly fine. The cryptic bit i was referring to was > declaring/initializing a static variable inside this particular > function. Indeed, and I pointed to Pedro's patch because it removes that. The global object is statically allocated and is constructed at startup, so there's no more checking if it's initialized nor static variable inside a function. > It ought to be possible to initialize the static variable somewhere > else and only do the null check/allocation in the function? Compilers > will often zero these out too, so initializing to NULL may not even be > needed? I think this is a common pattern when you want to have a singleton with lazy initialization, but I agree that it can be confusing. The variables with static storage duration are put in .bss (since they are not in .data), so yes they'd be initialized to 0 automatically, I believe. I prefer to see the = NULL though. Of course we could move the variable outside the scope of the function, but then it would be possible to reference it from other functions. The goal of declaring it in the function is that the only way to reach it is by calling the function it's in. > The fact that the initialization only happens once but the source line > is there forever can cause some confusion. Well, you can thank Mr Ritchie & friends I suppose :).