From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20012 invoked by alias); 19 Mar 2009 16:21:04 -0000 Received: (qmail 20006 invoked by alias); 19 Mar 2009 16:21:03 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_66,SPF_HELO_PASS X-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_66,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion.fedora.phx.redhat.com Subject: rgmanager: master - rgmanager: Clean up thread handling To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: rgmanager.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 9f1d4661c3ba936debf67ea2cf1f084ba4659934 X-Git-Newrev: ef1331462a6a2707a7f830b29b15c4905e606651 From: Lon Hohberger Message-Id: <20090319162022.3C15E120272@lists.fedorahosted.org> Date: Thu, 19 Mar 2009 16:21:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q1/txt/msg00827.txt.bz2 Gitweb: http://git.fedorahosted.org/git/rgmanager.git?p=rgmanager.git;a=commitdiff;h=ef1331462a6a2707a7f830b29b15c4905e606651 Commit: ef1331462a6a2707a7f830b29b15c4905e606651 Parent: 9f1d4661c3ba936debf67ea2cf1f084ba4659934 Author: Lon Hohberger AuthorDate: Thu Mar 19 12:19:08 2009 -0400 Committer: Lon Hohberger CommitterDate: Thu Mar 19 12:20:18 2009 -0400 rgmanager: Clean up thread handling * free memory if we fail to malloc our args * Don't use C++ reserved word 'new' for a variable Signed-off-by: Lon Hohberger --- rgmanager/src/clulib/tmgr.c | 25 +++++++++++++++---------- 1 files changed, 15 insertions(+), 10 deletions(-) diff --git a/rgmanager/src/clulib/tmgr.c b/rgmanager/src/clulib/tmgr.c index f2cb2db..a86d258 100644 --- a/rgmanager/src/clulib/tmgr.c +++ b/rgmanager/src/clulib/tmgr.c @@ -76,32 +76,37 @@ __wrap_pthread_create(pthread_t *th, const pthread_attr_t *attr, void *arg) { void *fn = start_routine; - mthread_t *new; + mthread_t *newthread; thread_arg_t *targ; int ret; - new = malloc(sizeof (*new)); + newthread = malloc(sizeof (*newthread)); + if (!newthread) + return -1; targ = malloc(sizeof (*targ)); - if (!targ||!new) + if (!targ) { + free(newthread) return -1; + } + targ->real_thread_fn = start_routine; targ->real_thread_arg = arg; ret = __real_pthread_create(th, attr, setup_thread, targ); if (ret) { - if (new) - free(new); + if (newthread) + free(newthread); if (targ) free(targ); return ret; } - if (new) { - new->th = *th; - new->fn = start_routine; - new->name = backtrace_symbols(&new->fn, 1); + if (newthread) { + newthread->th = *th; + newthread->fn = start_routine; + newthread->name = backtrace_symbols(&new->fn, 1); pthread_rwlock_wrlock(&_tlock); - list_insert(&_tlist, new); + list_insert(&_tlist, newthread); ++_tcount; pthread_rwlock_unlock(&_tlock); }