[vlc-devel] Callbacks in modules written in C++ have wrong linkage
Rémi Denis-Courmont
remi at remlab.net
Mon Feb 22 20:39:31 CET 2016
Le 2016-02-22 14:37, Filip Roséen a écrit :
>> NOTE
>>
>> Related to this problem is the fact that loading of modules stores
>> pointer-to-functions inside pointer-to-void, which is
>> undefined-behavior according to both the C and C++ Standard.
Yes and no. ISO C leaves it as a portability issue what conversion what
function and void pointers do, but somewhat recommends supporting it for
debugging purpose anyway (J.5.7). POSIX makes it well defined so we do
not care:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html
Win32 & OpenGL use a different style:
void (*)() instead of void *.
I think that is more dangerous, as it allows accidental function calls
without proper cast. Such a function call would fail on LP64 and LLP64
platforms due to default promotion rules.
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list