[glib] ffi: Marshal flags like enums



commit 7b685eab8821686821c38e398536b0842b0ed131
Author: Ray Strode <rstrode redhat com>
Date:   Wed Sep 16 18:01:04 2015 +0200

    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 files changed, 7 insertions(+), 1 deletions(-)
---
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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]