This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/6] New function null_stream


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 :).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]