diff --git a/glib/Variant.cs b/glib/Variant.cs index cce7bcbc7..b4051016c 100644 --- a/glib/Variant.cs +++ b/glib/Variant.cs @@ -283,12 +283,12 @@ namespace GLib { } [DllImport (Global.GLibNativeDll, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr g_variant_get_string (IntPtr handle); + static extern IntPtr g_variant_get_string (IntPtr handle, IntPtr length); public static explicit operator string (Variant val) { - IntPtr str = g_variant_get_string (val.Handle); - return str == IntPtr.Zero ? null : GLib.Marshaller.Utf8PtrToString (str); + IntPtr str = g_variant_get_string (val.Handle, IntPtr.Zero); + return GLib.Marshaller.Utf8PtrToString (str); } [DllImport (Global.GLibNativeDll, CallingConvention = CallingConvention.Cdecl)] diff --git a/sample/VariantDemo.cs b/sample/VariantDemo.cs index 1c3b47c61..d9a586fec 100644 --- a/sample/VariantDemo.cs +++ b/sample/VariantDemo.cs @@ -27,6 +27,7 @@ namespace sample var dict = new Dictionary (); dict.Add ("strv", new Variant (strv)); dict.Add ("unit", Variant.NewTuple (null)); + dict.Add ("str", new Variant ("String 6")); variant = new Variant (dict); Console.WriteLine (variant.Print (true)); @@ -35,6 +36,11 @@ namespace sample Console.WriteLine ("unit: " + asv["unit"].Print(true)); Console.WriteLine ("type: " + variant.Type.ToString ()); + + Variant tmp; + asv.TryGetValue ("str", out tmp); + var str = (string) tmp; + Console.WriteLine ("out str " + str); } public static void Main (string[] args)