Skip to contentSkip to conversation

Purpose of "struct object_entry *oe = oe;"?

DISCUSSION Bruce Stephens 3 participants 4 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

Out of curiousity, where did this convention/idiom come from, and what's it for?

I presume it's to remove a warning ("oe might be used uninitialised") on a compiler (or something) that's clever enough to attempt such analysis but too stupid to notice that the supposed initialisation is using something uninitialised (or perhaps the compiler's deliberately recognising the convention?). Is that right, or does it actually do something more?

I'm mostly surprised that it surprises me. Is it used commonly in other projects? (It appears not to be mentioned in CodingGuidelines; should it be?)

(First instance in git that I can see is
67affd5173da059ca60aab7896985331acacd9b4, 2006.)

#1 lore raw
Quoted 10 lines · Bruce Stephens

Out of curiousity, where did this convention/idiom come from, and what's it for?

I presume it's to remove a warning ("oe might be used uninitialised") on a compiler (or something) that's clever enough to attempt such analysis but too stupid to notice that the supposed initialisation is using something uninitialised (or perhaps the compiler's deliberately recognising the convention?). Is that right, or does it actually do something more?

Quoted 6 lines

I'm mostly surprised that it surprises me. Is it used commonly in other projects? (It appears not to be mentioned in CodingGuidelines; should it be?)

(First instance in git that I can see is
67affd5173da059ca60aab7896985331acacd9b4, 2006.)

There are some good explanations in the list archives.
http://thread.gmane.org/gmane.comp.version-control.git/133278/focus=133422
http://thread.gmane.org/gmane.comp.version-control.git/124676/focus=124803

Signature · 1 line
		David
#2 lore raw

David Aguilar <[email protected]> writes:

[...]

Quoted 3 lines

There are some good explanations in the list archives.
http://thread.gmane.org/gmane.comp.version-control.git/133278/focus=133422
http://thread.gmane.org/gmane.comp.version-control.git/124676/focus=124803

Thanks. That matches my guess.

Wouldn't it be useful to mention it in CodingGuidelines?

A danger is that the declaration (that yes, this really is initialised before use) becomes invalid during further changes, so it's best if everybody concerned understands the convention.

Obviously if it's a commonly understood and used convention then it's just as well not to have it in CodingGuidelines, but I'm not convinced that this one is, though (having noticed it) the intention isn't hard to grok.

#3 lore raw
In reply to Bruce Stephens
Quoted 10 lines · Bruce Stephens

Out of curiousity, where did this convention/idiom come from, and what's it for?

I presume it's to remove a warning ("oe might be used uninitialised") on a compiler (or something) that's clever enough to attempt such analysis but too stupid to notice that the supposed initialisation is using something uninitialised (or perhaps the compiler's deliberately recognising the convention?). Is that right, or does it actually do something more?

Quoted 3 lines

I'm mostly surprised that it surprises me. Is it used commonly in other projects? (It appears not to be mentioned in CodingGuidelines; should it be?)

I was wondering this myself. My compiler complains in (and only in) the *presence* of this idiom, rather than its absence, so I undid it:

jj/warn/uninitialized branch on GitHub
http://github.com/jjuran/git/tree/jj/warn/uninitialized

jj/warn/uninitialized commit on GitHub
http://github.com/jjuran/git/commit/8affbf2d8e46fbd5f3d6898aa07ea8548432e7bc

A compiler that warns of uninitialized usage *unless* a variable is initialized *with itself* is doubly broken.

Cheers,
Josh