From: Simon McVittie Date: Sun, 20 Jul 2014 11:39:24 +0000 (+0100) Subject: gatomic: statically assert that our assumptions hold X-Git-Tag: 2.41.3~42 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7269d75321b9d2a967a59fb35f243397f577eb41;p=platform%2Fupstream%2Fglib.git gatomic: statically assert that our assumptions hold This code assumes that int is exactly 4 bytes, and that pointers are either 4 or 8 bytes, on platforms with __ATOMIC_SEQ_CST. In practice this is going to be true. Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932 --- diff --git a/glib/gatomic.h b/glib/gatomic.h index 9d04b1d..056a517 100644 --- a/glib/gatomic.h +++ b/glib/gatomic.h @@ -87,6 +87,9 @@ G_END_DECLS /* We prefer the new C11-style atomic extension of GCC if available */ #if defined(__ATOMIC_SEQ_CST) && !defined(__clang__) +/* We use __atomic_load_4, so we rely on this being true */ +G_STATIC_ASSERT (sizeof (gint) == 4); + #define g_atomic_int_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ @@ -116,6 +119,9 @@ G_END_DECLS #else /* GLIB_SIZEOF_VOID_P == 8 */ +/* Assume that if GLIB_SIZEOF_VOID_P is not 8, it must be 4 */ +G_STATIC_ASSERT (sizeof (gpointer) == 4); + #define g_atomic_pointer_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \