[glib] g_clear_pointer: work around gcc helpfulness
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] g_clear_pointer: work around gcc helpfulness
- Date: Thu, 17 May 2012 14:47:46 +0000 (UTC)
commit 0ecbb0a4045877936d872fb8aaedd49baa4d89ef
Author: Dan Winship <danw gnome org>
Date: Thu May 10 13:29:39 2012 -0400
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 files changed, 3 insertions(+), 1 deletions(-)
---
diff --git a/glib/gmem.h b/glib/gmem.h
index 597bfdf..c50f46e 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]