summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-09-14 21:05:47 +0000
committerLennart Poettering <lennart@poettering.net>2007-09-14 21:05:47 +0000
commitf0b9dce32e4c5d77f57364ccdc7795f828f7f6a0 (patch)
tree9f4af5ac4e5ba2780fc74b80a3927892ad4bcb22
parentbf274cb617d92e55d18fa7e2f6b1cf139b96a413 (diff)
explicitly destory TLS data before destroying TLS
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1821 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/pulsecore/thread.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/pulsecore/thread.h b/src/pulsecore/thread.h
index 4a2b1bb8..0c6c859d 100644
--- a/src/pulsecore/thread.h
+++ b/src/pulsecore/thread.h
@@ -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()); \