From: Michael Jerris Date: Mon, 21 May 2007 15:38:35 +0000 (+0000) Subject: fix leak on pthread failures. X-Git-Tag: v1.0.6~38^3~851 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5fb4a3cc022dbe543f4a97807c8357e78612080;p=thirdparty%2Ffreeswitch.git fix leak on pthread failures. git-svn-id: http://svn.openzap.org/svn/openzap/trunk@61 a93c3328-9c30-0410-af19-c9cd2b2d52af --- 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) {