The glue code expects a zeroed-out gvalue, so to provide this we must initialize it in managed code and pass it as a ref rather than out. --- gsf-sharp-0.5/gsf/DocProp.custom 2005-10-28 17:02:40.000000000 +0100 +++ gsf-sharp-dsd/gsf/DocProp.custom 2005-11-02 13:54:59.000000000 +0000 @@ -1,6 +1,6 @@ [DllImport("libgsfglue")] - static extern void gsf_doc_prop_glue_get_val(IntPtr raw, out GLib.GType type, out GLib.Value gvalue); + static extern void gsf_doc_prop_glue_get_val(IntPtr raw, out GLib.GType type, ref GLib.Value gvalue); [DllImport("libgsfglue")] static extern void gsf_doc_prop_glue_set_val(IntPtr raw, ref GLib.Value val); @@ -8,9 +8,9 @@ public object Val { get { GLib.GType type = GLib.GType.None; - GLib.Value gvalue; + GLib.Value gvalue = GLib.Value.Empty; - gsf_doc_prop_glue_get_val(Handle, out type, out gvalue); + gsf_doc_prop_glue_get_val(Handle, out type, ref gvalue); if (type != GLib.GType.None) return gvalue.Val;