s3: Properly clean up in pthreadpool_init in case of failure
authorVolker Lendecke <vl@samba.org>
Wed, 27 Apr 2011 20:18:12 +0000 (22:18 +0200)
committerVolker Lendecke <vlendec@samba.org>
Wed, 27 Apr 2011 21:57:19 +0000 (23:57 +0200)
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Wed Apr 27 23:57:19 CEST 2011 on sn-devel-104

source3/lib/pthreadpool/pthreadpool.c

index 3cf6cb7045835b78c027c729b621e0e00ce2b1a7..7538fb79955fb4ff379bda4647705747fe61be96 100644 (file)
@@ -120,6 +120,8 @@ int pthreadpool_init(unsigned max_threads, struct pthreadpool **presult)
 
        ret = pthread_mutex_init(&pool->mutex, NULL);
        if (ret != 0) {
+               close(pool->sig_pipe[0]);
+               close(pool->sig_pipe[1]);
                free(pool);
                return ret;
        }
@@ -127,6 +129,8 @@ int pthreadpool_init(unsigned max_threads, struct pthreadpool **presult)
        ret = pthread_cond_init(&pool->condvar, NULL);
        if (ret != 0) {
                pthread_mutex_destroy(&pool->mutex);
+               close(pool->sig_pipe[0]);
+               close(pool->sig_pipe[1]);
                free(pool);
                return ret;
        }
@@ -143,6 +147,8 @@ int pthreadpool_init(unsigned max_threads, struct pthreadpool **presult)
        if (ret != 0) {
                pthread_cond_destroy(&pool->condvar);
                pthread_mutex_destroy(&pool->mutex);
+               close(pool->sig_pipe[0]);
+               close(pool->sig_pipe[1]);
                free(pool);
                return ret;
        }