Fix for 64-bit JACK problem with variadic functions


#1

I stumbled across a bit of a problem with the JUCE JACK wrapper. Works just fine on 32-bit Ubuntu, but on 64-bit, it crashes with a segmentation fault when calling jack_client_open. The problem appears to be due to the fact that jack_client_open is actually a variadic (…) function.

The fix is a simple one. In juce_linux_JackAudio.cpp change:

JUCE_DECL_JACK_FUNCTION (jack_client_t*, jack_client_open, (const char* client_name, jack_options_t options, jack_status_t* status), (client_name, options, status));
to

I’ve confirmed this fixes the crash, and it still works fine on 32-bit. As for why it didn’t crash originally on 32-bit, I’ve not the faintest, but I guess that’s the price we pay when we use ellipsis and leave the happy world of type-safety.


#2

Wow, thanks for spotting that! I’d have thought that a variadic function to call into a shared library is just bound to cause trouble…