From 675b915e366c2164cd2bb19ef54e22df3ddb8182 Mon Sep 17 00:00:00 2001 From: Peter Williams Date: Sat, 27 Aug 2005 19:57:55 +0000 Subject: [PATCH] 2005-08-27 Peter Williams * gnome/Program.custom: Use a GLib.Argv in PersistentData to store a handle to argv, so that the unmanaged strings aren't freed out from under popt. This allows the popt context to actually be used. svn path=/trunk/gtk-sharp/; revision=48983 --- ChangeLog | 6 ++++++ gnome/Program.custom | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 066ed43ba..e13603a48 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-08-27 Peter Williams + + * gnome/Program.custom: Use a GLib.Argv in PersistentData to store + a handle to argv, so that the unmanaged strings aren't freed out + from under popt. This allows the popt context to actually be used. + 2005-08-26 John Luke * glib/Signal.cs: deal with obj.Handle == IntPtr.Zero diff --git a/gnome/Program.custom b/gnome/Program.custom index 5b2997496..bdd468e27 100644 --- a/gnome/Program.custom +++ b/gnome/Program.custom @@ -34,7 +34,7 @@ struct PropertyArg { [DllImport("gnomesharpglue-2")] static extern System.IntPtr -gtksharp_gnome_program_init (string app_id, string app_version, IntPtr module, int argc, string[] argv, int nargs, PropertyArg[] args); +gtksharp_gnome_program_init (string app_id, string app_version, IntPtr module, int argc, IntPtr argv, int nargs, PropertyArg[] args); public Program (string app_id, string app_version, ModuleInfo module, string[] argv, params object[] props) : base (IntPtr.Zero) { @@ -68,7 +68,10 @@ public Program (string app_id, string app_version, ModuleInfo module, string[] a /* FIXME: Is there a way to access this in .NET? */ new_argv[0] = app_id; Array.Copy (argv, 0, new_argv, 1, argv.Length); - Raw = gtksharp_gnome_program_init (app_id, app_version, module.Handle, new_argv.Length, new_argv, nargs, args); + + GLib.Argv gargv = new GLib.Argv (new_argv, false); + Raw = gtksharp_gnome_program_init (app_id, app_version, module.Handle, new_argv.Length, gargv.Handle, nargs, args); + PersistentData["glib_argv"] = gargv; // // Dynamically reset the signal handlers, because Gnome overwrites them