From 2e115e2aff7678a37e4050a345be65378df9fdcd Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Wed, 27 Apr 2011 19:05:11 -0500 Subject: [PATCH] * glib/Value.cs: revert to "working" GValue layout from 2-12 branch. The replaced code fails because sizeof(GValue) is 20 on 32 bit linux but Marshal.SizeOf(GLib.Value) reported 24. If it aint broke, don't fix it, and the long works on 32 and 64 in 2.12 and earlier. --- glib/Value.cs | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/glib/Value.cs b/glib/Value.cs index 82d6e6372..32963e516 100755 --- a/glib/Value.cs +++ b/glib/Value.cs @@ -30,23 +30,10 @@ namespace GLib { [StructLayout (LayoutKind.Sequential)] public struct Value : IDisposable { - [StructLayout(LayoutKind.Explicit)] - struct Padding { - [FieldOffset (0)] public int v_int; - [FieldOffset (0)] public uint v_uint; - [FieldOffset (0)] public int v_long; - [FieldOffset (0)] public uint v_ulong; - [FieldOffset (0)] public long v_int64; - [FieldOffset (0)] public ulong v_uint64; - [FieldOffset (0)] public float v_float; - [FieldOffset (0)] public double v_double; - [FieldOffset (0)] public IntPtr v_pointer; - } - IntPtr type; #pragma warning disable 0414 - Padding pad1; - Padding pad2; + long pad1; + long pad2; #pragma warning restore 0414 public static Value Empty; @@ -54,16 +41,14 @@ namespace GLib { public Value (GLib.GType gtype) { type = IntPtr.Zero; - pad1 = new Padding (); - pad2 = new Padding (); + pad1 = pad2 = 0; g_value_init (ref this, gtype.Val); } public Value (object obj) { type = IntPtr.Zero; - pad1 = new Padding (); - pad2 = new Padding (); + pad1 = pad2 = 0; GType gtype = (GType) obj.GetType (); g_value_init (ref this, gtype.Val); @@ -140,8 +125,7 @@ namespace GLib { public Value (Opaque val, string type_name) { type = IntPtr.Zero; - pad1 = new Padding (); - pad2 = new Padding (); + pad1 = pad2 = 0; g_value_init (ref this, GType.FromName (type_name).Val); g_value_set_boxed (ref this, val.Handle); } @@ -159,8 +143,7 @@ namespace GLib { public Value (GLib.Object obj, string prop_name) { type = IntPtr.Zero; - pad1 = new Padding (); - pad2 = new Padding (); + pad1 = pad2 = 0; InitForProperty (obj, prop_name); } @@ -168,8 +151,7 @@ namespace GLib { public Value (IntPtr obj, string prop_name, Opaque val) { type = IntPtr.Zero; - pad1 = new Padding (); - pad2 = new Padding (); + pad1 = pad2 = 0; InitForProperty (GLib.Object.GetObject (obj), prop_name); g_value_set_boxed (ref this, val.Handle); }