[PATCH] gcc warning 'expression which evaluates to zero treated as a null pointer'

Started by didierover 6 years ago5 messageshackers
Jump to latest
#1didier
did447@gmail.com

Hi,
Trivial patch:
- remove a gcc warning (since commit 7a0574b5)
expression which evaluates to zero treated as a null pointer constant of
type 'HeapTuple' (aka 'struct HeapTupleData *')

- always use "if (newtuple == NULL)" rather than mixing !newtuple and
newtuple == NULL

Regards
Didier

Attachments:

trigger.patchtext/x-patch; charset=US-ASCII; name=trigger.patchDownload+4-4
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: didier (#1)
Re: [PATCH] gcc warning 'expression which evaluates to zero treated as a null pointer'

didier <did447@gmail.com> writes:

Trivial patch:
- remove a gcc warning (since commit 7a0574b5)
expression which evaluates to zero treated as a null pointer constant of
type 'HeapTuple' (aka 'struct HeapTupleData *')

Hmm, the initializations "HeapTuple newtuple = false" are certainly
bogus-looking and not per project style; I wonder who's to blame for
those? (I do not see what 7a0574b5 would have had to do with it;
that didn't affect any backend code.)

- always use "if (newtuple == NULL)" rather than mixing !newtuple and
newtuple == NULL

Don't particularly agree with these changes though. "if (!ptr)" is
a very common C idiom, and no programmer would tolerate a compiler
that warned about it.

regards, tom lane

#3didier
did447@gmail.com
In reply to: Tom Lane (#2)
Re: [PATCH] gcc warning 'expression which evaluates to zero treated as a null pointer'

Hi,
On Wed, Nov 13, 2019 at 8:52 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

didier <did447@gmail.com> writes:

Trivial patch:
- remove a gcc warning (since commit 7a0574b5)
expression which evaluates to zero treated as a null pointer constant of
type 'HeapTuple' (aka 'struct HeapTupleData *')

Hmm, the initializations "HeapTuple newtuple = false" are certainly
bogus-looking and not per project style; I wonder who's to blame for
those? (I do not see what 7a0574b5 would have had to do with it;
that didn't affect any backend code.)

My mistake it's not gcc but clang for JIT, maybe because it could
change false definition?
clang version: 6.0.0-1ubuntu2
clang -E output before 7a0574b5
HeapTuple newtuple = 0;
with 7a0574b5
HeapTuple newtuple = ((bool) 0);

- always use "if (newtuple == NULL)" rather than mixing !newtuple and
newtuple == NULL

Don't particularly agree with these changes though. "if (!ptr)" is
a very common C idiom, and no programmer would tolerate a compiler
that warned about it.

There's no warning, it's stylistic. In the same function there's both
forms a couple of lines apart: "if (!ptr)" follow by "if (ptr ==
NULL)", using only one form is smother on the brain, at least mine.

Regards
Didier

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: didier (#3)
Re: [PATCH] gcc warning 'expression which evaluates to zero treated as a null pointer'

didier <did447@gmail.com> writes:

clang -E output before 7a0574b5
HeapTuple newtuple = 0;
with 7a0574b5
HeapTuple newtuple = ((bool) 0);

Hm, did you re-run configure after 7a0574b5? If you didn't, it would
have gone through the not-stdbool.h path in c.h, which might account
for this. It's a good catch though, even if by accident :-)

regards, tom lane

#5didier
did447@gmail.com
In reply to: Tom Lane (#4)
Re: [PATCH] gcc warning 'expression which evaluates to zero treated as a null pointer'

Hi,

On Wed, Nov 13, 2019 at 10:01 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

didier <did447@gmail.com> writes:

clang -E output before 7a0574b5
HeapTuple newtuple = 0;
with 7a0574b5
HeapTuple newtuple = ((bool) 0);

Hm, did you re-run configure after 7a0574b5? If you didn't, it would
have gone through the not-stdbool.h path in c.h, which might account
for this. It's a good catch though, even if by accident :-)

Yes, that's it. I should have known better, it's no the first time I
made this mistake,
thanks.

Didier