Browse Source
The rationale behind this patch is easier to explain with a little bit
of code than in words, but one can summarize it with; "wrong linkage
used for `vlc_set_cb` when `include/vlc_plugin.h` is compiled as C++,
this fixes that".
Explanation
-----------
extern "C" typedef void(*callback_t)();
void cpp_func (callback_t);
Above the name `cpp_func` has C++ linkage, and its type is a C++ function
returning `void`, accepting a pointer-to-function-with-C-linkage (returning
`void` and takes no arguments).
typedef void(*callback_t) ();
extern "C" int c_func (callback_t);
In this example (matching the code in `include/vlc_plugin.h`), the name `c_func`
has C linkage, and its type is a C function returning `int`, accepting a
pointer-to-function-with-C++-linkage (that returns `void` and takes no
arguments).
Conclusion
----------
Since `vlc_entry_*` will be called from C, the first parameter when invoked will
be a pointer to function with C linkage---as such this patch fixes the
previously erroneous linkage.
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
pull/42/head
committed by
Rémi Denis-Courmont
1 changed files with 1 additions and 1 deletions
Loading…
Reference in new issue