From 7b685eab8821686821c38e398536b0842b0ed131 Mon Sep 17 00:00:00 2001 From: Ray Strode 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 014e40a19..3c6894a7c 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;