fix leak on pthread failures.
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@61 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
parent
c38285a05b
commit
e5fb4a3cc0
|
@ -104,19 +104,24 @@ zap_status_t zap_thread_create_detached_ex(zap_thread_function_t func, void *dat
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
CloseHandle(thread->handle);
|
CloseHandle(thread->handle);
|
||||||
|
|
||||||
|
status = ZAP_SUCCESS;
|
||||||
|
goto done;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
if (pthread_attr_init(&thread->attribute) != 0) goto fail;
|
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;
|
status = ZAP_SUCCESS;
|
||||||
goto done;
|
goto done;
|
||||||
|
failpthread:
|
||||||
|
pthread_attr_destroy(&thread->attribute);
|
||||||
|
#endif
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
if (thread) {
|
if (thread) {
|
||||||
|
|
Loading…
Reference in New Issue