]> git.alsa-project.org Git - alsa-lib.git/commitdiff
dlsym: fix again snd_dlpath()
authorJaroslav Kysela <perex@perex.cz>
Mon, 8 Jun 2020 10:02:53 +0000 (12:02 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 8 Jun 2020 10:03:33 +0000 (12:03 +0200)
There is double lock in 8d866e4cd886991f605399af6bd6cf4ac6eea3e2 .

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/dlmisc.c

index e36017218aa63c7c8d0a424761b86afbc556e41e..2c7dc319eb6a5c207d8fa323b6b5d10598c7294e 100644 (file)
@@ -42,20 +42,20 @@ static char *snd_libdir_origin = NULL;
 #endif
 
 #ifdef HAVE_LIBPTHREAD
-static pthread_mutex_t snd_dlobj_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t snd_dlpath_mutex = PTHREAD_MUTEX_INITIALIZER;
 
-static inline void snd_dlobj_lock(void)
+static inline void snd_dlpath_lock(void)
 {
-       pthread_mutex_lock(&snd_dlobj_mutex);
+       pthread_mutex_lock(&snd_dlpath_mutex);
 }
 
-static inline void snd_dlobj_unlock(void)
+static inline void snd_dlpath_unlock(void)
 {
-       pthread_mutex_unlock(&snd_dlobj_mutex);
+       pthread_mutex_unlock(&snd_dlpath_mutex);
 }
 #else
-static inline void snd_dlobj_lock(void) {}
-static inline void snd_dlobj_unlock(void) {}
+static inline void snd_dlpath_lock(void) {}
+static inline void snd_dlpath_unlock(void) {}
 #endif
 
 /**
@@ -71,7 +71,7 @@ int snd_dlpath(char *path, size_t path_len, const char *name)
 #ifdef HAVE_LIBDL
 #ifdef __GLIBC__
        static int plugin_dir_set = 0;
-       snd_dlobj_lock();
+       snd_dlpath_lock();
        if (!plugin_dir_set) {
                struct link_map *links;
                Dl_info info;
@@ -85,7 +85,7 @@ int snd_dlpath(char *path, size_t path_len, const char *name)
                }
                plugin_dir_set = 1;
        }
-       snd_dlobj_unlock();
+       snd_dlpath_unlock();
 #endif
 #endif
        if (snd_libdir_origin)
@@ -287,6 +287,23 @@ struct dlobj_cache {
        struct list_head list;
 };
 
+#ifdef HAVE_LIBPTHREAD
+static pthread_mutex_t snd_dlobj_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+static inline void snd_dlobj_lock(void)
+{
+       pthread_mutex_lock(&snd_dlobj_mutex);
+}
+
+static inline void snd_dlobj_unlock(void)
+{
+       pthread_mutex_unlock(&snd_dlobj_mutex);
+}
+#else
+static inline void snd_dlobj_lock(void) {}
+static inline void snd_dlobj_unlock(void) {}
+#endif
+
 static LIST_HEAD(pcm_dlobj_list);
 
 static struct dlobj_cache *