From 2c853b4c44ff3e27ee2f0e018a983d4b08de25c2 Mon Sep 17 00:00:00 2001 From: nadiramra Date: Mon, 31 May 2010 03:43:54 +0000 Subject: AXIS2C-1473 some leaks in thread_unix.c and thread_pool.c git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@949662 13f79535-47bb-0310-9956-ffa450edef68 --- util/src/platforms/os400/thread_os400.c | 17 ++++++----------- util/src/platforms/unix/thread_unix.c | 19 +++++++------------ 2 files changed, 13 insertions(+), 23 deletions(-) (limited to 'util') diff --git a/util/src/platforms/os400/thread_os400.c b/util/src/platforms/os400/thread_os400.c index 0269f9e..8f1abf7 100644 --- a/util/src/platforms/os400/thread_os400.c +++ b/util/src/platforms/os400/thread_os400.c @@ -28,11 +28,9 @@ axutil_threadattr_create( new = AXIS2_MALLOC(allocator, sizeof(axutil_threadattr_t)); if (!new) - { return NULL; - } - stat = pthread_attr_init(&(new->attr)); + stat = pthread_attr_init(&(new->attr)); if (stat != 0) { AXIS2_FREE(allocator, new); @@ -107,12 +105,12 @@ axutil_thread_create( new = (axutil_thread_t *) AXIS2_MALLOC(allocator, sizeof(axutil_thread_t)); if (!new) - { return NULL; - } + new->td = (pthread_t *) AXIS2_MALLOC(allocator, sizeof(pthread_t)); if (!new->td) { + AXIS2_FREE(allocator, new); return NULL; } @@ -121,18 +119,15 @@ axutil_thread_create( new->try_exit = AXIS2_FALSE; if (attr) - { temp = &(attr->attr); - } - else - { - temp = NULL; - } if ((stat = pthread_create(new->td, temp, dummy_worker, new)) == 0) { return new; } + + AXIS2_FREE(allocator, new->td); + AXIS2_FREE(allocator, new); return NULL; } diff --git a/util/src/platforms/unix/thread_unix.c b/util/src/platforms/unix/thread_unix.c index ccedd06..29c5412 100644 --- a/util/src/platforms/unix/thread_unix.c +++ b/util/src/platforms/unix/thread_unix.c @@ -27,9 +27,8 @@ axutil_threadattr_create( new = AXIS2_MALLOC(allocator, sizeof(axutil_threadattr_t)); if(!new) - { return NULL; - } + stat = pthread_attr_init(&(new->attr)); if(stat != 0) @@ -104,14 +103,13 @@ axutil_thread_create( axutil_thread_t *new = NULL; new = (axutil_thread_t *)AXIS2_MALLOC(allocator, sizeof(axutil_thread_t)); - if(!new) - { return NULL; - } + new->td = (pthread_t *)AXIS2_MALLOC(allocator, sizeof(pthread_t)); if(!new->td) { + AXIS2_FREE(allocator, new); return NULL; } @@ -120,18 +118,15 @@ axutil_thread_create( new->try_exit = AXIS2_FALSE; if(attr) - { temp = &(attr->attr); - } - else - { - temp = NULL; - } if((stat = pthread_create(new->td, temp, dummy_worker, new)) == 0) { return new; } + + AXIS2_FREE(allocator, new->td); + AXIS2_FREE(allocator, new); return NULL; } @@ -296,7 +291,7 @@ axutil_thread_once_init( axutil_thread_once_t *control = AXIS2_MALLOC(allocator, sizeof(axutil_thread_once_t)); if(!control) { - return NULL;; + return NULL; } (control)->once = once_init; return control; -- cgit v1.1-32-gdbae