From 0ecbb0a4045877936d872fb8aaedd49baa4d89ef Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 10 May 2012 13:29:39 -0400 Subject: [PATCH] g_clear_pointer: work around gcc helpfulness gcc gets upset when we do "((GDestroyNotify) destroy) (_p)" because it's non-portable. But we don't care; we already know glib wouldn't work on any platform where different pointer types have different calling conventions. So tweak the code to avoid the warning. https://bugzilla.gnome.org/show_bug.cgi?id=674634 --- glib/gmem.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/glib/gmem.h b/glib/gmem.h index 597bfdf60..c50f46e74 100644 --- a/glib/gmem.h +++ b/glib/gmem.h @@ -103,6 +103,8 @@ gpointer g_try_realloc_n (gpointer mem, /* Only one access, please */ \ gpointer *_pp = (gpointer *) (pp); \ gpointer _p; \ + /* This assignment is needed to avoid a gcc warning */ \ + GDestroyNotify _destroy = (GDestroyNotify) (destroy); \ \ (void) (0 ? (gpointer) *(pp) : 0); \ do \ @@ -110,7 +112,7 @@ gpointer g_try_realloc_n (gpointer mem, while G_UNLIKELY (!g_atomic_pointer_compare_and_exchange (_pp, _p, NULL)); \ \ if (_p) \ - ((GDestroyNotify) (destroy)) (_p); \ + _destroy (_p); \ } G_STMT_END /* Optimise: avoid the call to the (slower) _n function if we can