From: Takashi Iwai Date: Mon, 20 Jan 2003 17:15:54 +0000 (+0000) Subject: fixed dlopen & co. for hook, ladspa and meter types. X-Git-Tag: v1.0.3~323 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=2dc8cba51c02243d67ef5328a4dc5bbacd443512;p=alsa-lib.git fixed dlopen & co. for hook, ladspa and meter types. --- diff --git a/src/pcm/pcm_hooks.c b/src/pcm/pcm_hooks.c index 4770fb9a..a0525300 100644 --- a/src/pcm/pcm_hooks.c +++ b/src/pcm/pcm_hooks.c @@ -517,15 +517,15 @@ static int snd_pcm_hook_add_conf(snd_pcm_t *pcm, snd_config_t *root, snd_config_ install = buf; snprintf(buf, sizeof(buf), "_snd_pcm_hook_%s_install", str); } - h = dlopen(lib, RTLD_NOW); - install_func = h ? dlsym(h, install) : NULL; + h = snd_dlopen(lib, RTLD_NOW); + install_func = h ? snd_dlsym(h, install, SND_DLSYM_VERSION(SND_PCM_DLSYM_VERSION)) : NULL; err = 0; if (!h) { SNDERR("Cannot open shared library %s", lib); err = -ENOENT; } else if (!install_func) { SNDERR("symbol %s is not defined inside %s", install, lib); - dlclose(h); + snd_dlclose(h); err = -ENXIO; } _err: diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c index 0ef781e1..696203b6 100644 --- a/src/pcm/pcm_ladspa.c +++ b/src/pcm/pcm_ladspa.c @@ -156,7 +156,7 @@ static void snd_pcm_ladspa_free_plugins(struct list_head *plugins) while (!list_empty(plugins)) { snd_pcm_ladspa_plugin_t *plugin = list_entry(plugins->next, snd_pcm_ladspa_plugin_t, list); if (plugin->dl_handle) - dlclose(plugin->dl_handle); + snd_dlclose(plugin->dl_handle); if (plugin->filename) free(plugin->filename); list_del(&plugin->list); @@ -718,9 +718,9 @@ static int snd_pcm_ladspa_check_file(snd_pcm_ladspa_plugin_t * const plugin, void *handle; assert(filename); - handle = dlopen(filename, RTLD_LAZY); + handle = snd_dlopen(filename, RTLD_LAZY); if (handle) { - LADSPA_Descriptor_Function fcn = (LADSPA_Descriptor_Function)dlsym(handle, "ladspa_descriptor"); + LADSPA_Descriptor_Function fcn = (LADSPA_Descriptor_Function)snd_dlsym(handle, "ladspa_descriptor", SND_DLSYM_VERSION(SND_PCM_DLSYM_VERSION)); if (fcn) { long idx; const LADSPA_Descriptor *d; @@ -737,7 +737,7 @@ static int snd_pcm_ladspa_check_file(snd_pcm_ladspa_plugin_t * const plugin, return 1; } } - dlclose(handle); + snd_dlclose(handle); } return -ENOENT; } diff --git a/src/pcm/pcm_meter.c b/src/pcm/pcm_meter.c index 15b75db1..402d0fdf 100644 --- a/src/pcm/pcm_meter.c +++ b/src/pcm/pcm_meter.c @@ -732,15 +732,15 @@ static int snd_pcm_meter_add_scope_conf(snd_pcm_t *pcm, const char *name, open_name = buf; snprintf(buf, sizeof(buf), "_snd_pcm_scope_%s_open", str); } - h = dlopen(lib, RTLD_NOW); - open_func = h ? dlsym(h, open_name) : NULL; + h = snd_dlopen(lib, RTLD_NOW); + open_func = h ? snd_dlsym(h, open_name, SND_DLSYM_VERSION(SND_PCM_DLSYM_VERSION)) : NULL; err = 0; if (!h) { SNDERR("Cannot open shared library %s", lib); err = -ENOENT; } else if (!open_func) { SNDERR("symbol %s is not defined inside %s", open_name, lib); - dlclose(h); + snd_dlclose(h); err = -ENXIO; } _err: