Re: Fix some "call to function ... through pointer to incorrect function type" errors

Collin Funk <[email protected]>
Newsgroups gmane.comp.lib.gnulib.bugs
Message-ID <[email protected]>
Bruno Haible <[email protected]> writes:

> Collin Funk wrote:
>> I still don't see an issue with it even though it is undefined behavior,
>
> It's a nice way to shoot yourself in the foot and spend time debugging,
> because
>   - the function is defined in one place,
>   - the cast (possibly via a union!) is in a different place,
>   - the call site is in a third place.
> And typically you don't get any warnings about these things.
>
> There are packages where converting function pointers, possibly via
> 'void *', is intentional and well implemented. But in the majority
> of application code, it is a dangerous thing to do.

I think my original message made it sound like I was advocating for
adding a bunch of bogus casts. Perhaps I need to spend more time looking
at sloppier code. :)

> You would think converting a   int (*) (char *)
> to                             int (*) (uintptr_t)
> is OK? Fail! On m68k, the first one passes its argument in register A0,
> whereas the second one passes its argument in register D0.

Interesting. Good to know. I don't think I have ever used m68k.

Collin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.