--- a/faad.c +++ b/faad.c @@ -594,6 +594,8 @@ static bool load_faad() { return false; } + err = dlerror(); // Reset previous dynamic linking error string (if there was) + a->NeAACDecGetCurrentConfiguration = dlsym(handle, "NeAACDecGetCurrentConfiguration"); a->NeAACDecSetConfiguration = dlsym(handle, "NeAACDecSetConfiguration"); a->NeAACDecOpen = dlsym(handle, "NeAACDecOpen"); --- a/ffmpeg.c +++ b/ffmpeg.c @@ -620,6 +620,8 @@ static bool load_ff() { return false; } + err = dlerror(); // Reset previous dynamic linking error string (if there was) + sprintf(name, LIBAVFORMAT, LIBAVFORMAT_VERSION_MAJOR); handle_format = dlopen(name, RTLD_NOW); if (!handle_format) { --- a/flac.c +++ b/flac.c @@ -241,6 +241,8 @@ static bool load_flac() { return false; } + err = dlerror(); // Reset previous dynamic linking error string (if there was) + f->FLAC__StreamDecoderErrorStatusString = dlsym(handle, "FLAC__StreamDecoderErrorStatusString"); f->FLAC__StreamDecoderStateString = dlsym(handle, "FLAC__StreamDecoderStateString"); f->FLAC__stream_decoder_new = dlsym(handle, "FLAC__stream_decoder_new"); --- a/ir.c +++ b/ir.c @@ -168,10 +168,10 @@ static void *ir_thread() { UNLOCK_I; wake_controller(); } - + free(code); } - + return 0; } @@ -185,6 +185,8 @@ static bool load_lirc() { return false; } + err = dlerror(); // Reset previous dynamic linking error string (if there was) + i->lirc_init = dlsym(handle, "lirc_init"); i->lirc_deinit = dlsym(handle, "lirc_deinit"); i->lirc_readconfig = dlsym(handle, "lirc_readconfig"); --- a/mad.c +++ b/mad.c @@ -365,7 +365,9 @@ static bool load_mad() { LOG_INFO("dlerror: %s", dlerror()); return false; } - + + err = dlerror(); // Reset previous dynamic linking error string (if there was) + m->mad_stream_init = dlsym(handle, "mad_stream_init"); m->mad_frame_init = dlsym(handle, "mad_frame_init"); m->mad_synth_init = dlsym(handle, "mad_synth_init"); --- a/mpg.c +++ b/mpg.c @@ -222,7 +222,9 @@ static bool load_mpg() { LOG_INFO("dlerror: %s", dlerror()); return false; } - + + err = dlerror(); // Reset previous dynamic linking error string (if there was) + m->mpg123_init = dlsym(handle, "mpg123_init"); m->mpg123_feature = dlsym(handle, "mpg123_feature"); m->mpg123_rates = dlsym(handle, "mpg123_rates"); --- a/resample.c +++ b/resample.c @@ -251,6 +251,8 @@ static bool load_soxr(void) { return false; } + err = dlerror(); // Reset previous dynamic linking error string (if there was) + r->soxr_io_spec = dlsym(handle, "soxr_io_spec"); r->soxr_quality_spec = dlsym(handle, "soxr_quality_spec"); r->soxr_create = dlsym(handle, "soxr_create"); --- a/vorbis.c +++ b/vorbis.c @@ -287,6 +287,8 @@ static bool load_vorbis() { } } + err = dlerror(); // Reset previous dynamic linking error string (if there was) + v->ov_read = tremor ? NULL : dlsym(handle, "ov_read"); v->ov_read_tremor = tremor ? dlsym(handle, "ov_read") : NULL; v->ov_info = dlsym(handle, "ov_info");