mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-05 08:56:16 +01:00
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
This commit is contained in:
parent
19e0cdd7a0
commit
7269d75321
@ -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)); \
|
||||
|
Loading…
Reference in New Issue
Block a user