From cde19e1cf575d33f7cd34bc0b6a4daea5d91cdc5 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 16 Sep 2015 18:01:04 +0200
Subject: [PATCH] ffi: Marshal flags like enums
Flags are enums.
Fixes broken marshalling on BE 64bit architectures.
https://bugzilla.gnome.org/show_bug.cgi?id=754882
---
gobject/gclosure.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/gobject/gclosure.c b/gobject/gclosure.c
index 014e40a..3c6894a 100644
--- a/gobject/gclosure.c
+++ b/gobject/gclosure.c
@@ -1186,9 +1186,15 @@ value_to_ffi_type (const GValue *gvalue,
*value = enum_tmpval;
*tmpval_used = TRUE;
break;
+ case G_TYPE_FLAGS:
+ g_assert (enum_tmpval != NULL);
+ rettype = &ffi_type_uint;
+ *enum_tmpval = g_value_get_flags (gvalue);
+ *value = enum_tmpval;
+ *tmpval_used = TRUE;
+ break;
case G_TYPE_UCHAR:
case G_TYPE_UINT:
- case G_TYPE_FLAGS:
rettype = &ffi_type_uint;
*value = (gpointer)&(gvalue->data[0].v_uint);
break;
--
2.4.3