Bruce Momjian <pgman@candle.pha.pa.us> writes:
> I don't have a version that does the double-cast, but I still have the
> patch to back out and put in a new one. Andrew's point was that we cast
> to void * in many places, so this case is not unique. Is that wrong?
I do not like code that uses cast to void* as a substitute for casting
to the real destination type. I think it's a lazy substitute for
providing the correct cast, and it renders the code more fragile because
there is *no* possibility of the compiler detecting a problem should you
change the source or destination datatype in a way that renders the cast
wrong.
I have not gone around and tried to fix all the places that are lazy in
this way, but I don't want to introduce more, and for sure I don't want
to set a precedent that we'll weaken our type checking any time gcc
burps for ill-defined reasons.
I agree completely with all of the objections you raised in your
original comment on the patch. In particular, I don't think we
understand why gcc is complaining about these few places and not any of
the thousands of other casts in our code. Until we understand that
difference completely, we are not "fixing a bug" by introducing void*
casts. I'd have to call it cargo-cult programming instead.
I am perfectly content to leave the warnings in place until we have a
satisfactory explanation.
regards, tom lane