]> code.delx.au - pulseaudio/commitdiff
explicitly destory TLS data before destroying TLS
authorLennart Poettering <lennart@poettering.net>
Fri, 14 Sep 2007 21:05:47 +0000 (21:05 +0000)
committerLennart Poettering <lennart@poettering.net>
Fri, 14 Sep 2007 21:05:47 +0000 (21:05 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1821 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/pulsecore/thread.h

index 4a2b1bb82383b5b146799c2f3da80c4b6178fe9b..0c6c859df030181866a2d9c339adfea2d2ce33ab 100644 (file)
@@ -70,8 +70,14 @@ void *pa_tls_set(pa_tls *t, void *userdata);
     }                                                                   \
     static void name##_tls_destructor(void) PA_GCC_DESTRUCTOR;          \
     static void name##_tls_destructor(void) {                           \
-        if (name##_tls.tls)                                             \
-            pa_tls_free(name##_tls.tls);                                \
+        if (!name##_tls.tls)                                            \
+            return;                                                     \
+        if (free_cb) {                                                  \
+            void *p;                                                    \
+            if ((p = pa_tls_get(name##_tls.tls)))                       \
+                free_cb(p);                                             \
+        }                                                               \
+        pa_tls_free(name##_tls.tls);                                    \
     }                                                                   \
     static inline void* name##_tls_get(void) {                          \
         return pa_tls_get(name##_tls_obj());                            \