From: Jakub Jelinek Date: Wed, 21 Jun 2006 08:59:44 +0000 (+0200) Subject: critical.c (GOMP_critical_name_start): Fix *pptr initialization when gomp_mutex_t... X-Git-Tag: releases/gcc-4.2.0~2345 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5d7b51995eab6b609a1f1e58dc3e3f5a5df73b8d;p=thirdparty%2Fgcc.git critical.c (GOMP_critical_name_start): Fix *pptr initialization when gomp_mutex_t is larger than pointer and... * critical.c (GOMP_critical_name_start): Fix *pptr initialization when gomp_mutex_t is larger than pointer and HAVE_SYNC_BUILTINS is defined. From-SVN: r114843 --- diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index dc86f86bdac5..8cd5519f404d 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,9 @@ +2006-06-21 Jakub Jelinek + + * critical.c (GOMP_critical_name_start): Fix *pptr initialization + when gomp_mutex_t is larger than pointer and HAVE_SYNC_BUILTINS is + defined. + 2006-06-20 Jakub Jelinek PR libgomp/26175 diff --git a/libgomp/critical.c b/libgomp/critical.c index 70159ec7a6ed..90821634b5e9 100644 --- a/libgomp/critical.c +++ b/libgomp/critical.c @@ -72,12 +72,14 @@ GOMP_critical_name_start (void **pptr) gomp_mutex_t *nlock = gomp_malloc (sizeof (gomp_mutex_t)); gomp_mutex_init (nlock); - plock = __sync_val_compare_and_swap (pptr, plock, nlock); - if (plock != nlock) + plock = __sync_val_compare_and_swap (pptr, NULL, nlock); + if (plock != NULL) { gomp_mutex_destroy (nlock); free (nlock); } + else + plock = nlock; #else gomp_mutex_lock (&create_lock_lock); plock = *pptr;