From e5fb4a3cc022dbe543f4a97807c8357e78612080 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Mon, 21 May 2007 15:38:35 +0000 Subject: [PATCH] fix leak on pthread failures. git-svn-id: http://svn.openzap.org/svn/openzap/trunk@61 a93c3328-9c30-0410-af19-c9cd2b2d52af --- libs/freetdm/src/zap_threadmutex.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libs/freetdm/src/zap_threadmutex.c b/libs/freetdm/src/zap_threadmutex.c index baea9bcbf1..8fc4632fd3 100644 --- a/libs/freetdm/src/zap_threadmutex.c +++ b/libs/freetdm/src/zap_threadmutex.c @@ -104,19 +104,24 @@ zap_status_t zap_thread_create_detached_ex(zap_thread_function_t func, void *dat goto fail; } CloseHandle(thread->handle); + + status = ZAP_SUCCESS; + goto done; #else if (pthread_attr_init(&thread->attribute) != 0) goto fail; - if (pthread_attr_setdetachstate(&thread->attribute, PTHREAD_CREATE_DETACHED) != 0) goto fail; + if (pthread_attr_setdetachstate(&thread->attribute, PTHREAD_CREATE_DETACHED) != 0) goto failpthread; - if (thread->stack_size && pthread_attr_setstacksize(&thread->attribute, thread->stack_size) != 0) goto fail; + if (thread->stack_size && pthread_attr_setstacksize(&thread->attribute, thread->stack_size) != 0) goto failpthread; - if (pthread_create(&thread->handle, &thread->attribute, thread_launch, thread) != 0) goto fail; + if (pthread_create(&thread->handle, &thread->attribute, thread_launch, thread) != 0) goto failpthread; -#endif status = ZAP_SUCCESS; goto done; +failpthread: + pthread_attr_destroy(&thread->attribute); +#endif fail: if (thread) {