diff --git a/ChangeLog b/ChangeLog
index f91e0c676..1af10a33c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-09-29  Mike Kestner  <mkestner@ximian.com>
+
+	* glib/GString.cs : new marshaling class for GStrings.  Used by
+	generator to map GString params and returns onto managed strings.
+	* glib/Makefile.am : add new file.
+
 2004-09-27  Mike Kestner  <mkestner@ximian.com>
 
 	* gtk/Button.custom : add a ctor (Widget). reworked from patch by
diff --git a/glib/GString.cs b/glib/GString.cs
new file mode 100644
index 000000000..ee01062dd
--- /dev/null
+++ b/glib/GString.cs
@@ -0,0 +1,58 @@
+// GLib.GString.cs : Marshaler for GStrings 
+//
+// Author: Mike Kestner  <mkestner@ximian.com>
+//
+// Copyright (c) 2004 Novell, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of version 2 of the Lesser GNU General 
+// Public License as published by the Free Software Foundation.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this program; if not, write to the
+// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+
+
+namespace GLib {
+	using System;
+	using System.Runtime.InteropServices;
+	
+	public class GString : GLib.IWrapper {
+
+		IntPtr handle;
+
+		[DllImport("libglib-2.0-0.dll")]
+		static extern IntPtr g_string_free (IntPtr mem, bool free_segments);
+
+		~GString ()
+		{
+			g_string_free (handle, true);
+		}
+
+		[DllImport("libglib-2.0-0.dll")]
+		static extern IntPtr g_string_new (string text);
+
+		public GString (string text) 
+		{
+			handle = g_string_new (text);
+		}
+
+		public IntPtr Handle {
+			get {
+				return handle;
+			}
+		}
+		
+		public static string PtrToString (IntPtr ptr) 
+		{
+			return Marshal.PtrToStringAnsi (ptr);
+		}
+	}
+}
+
diff --git a/glib/Makefile.am b/glib/Makefile.am
index e2b3fce0e..8dd028c2f 100644
--- a/glib/Makefile.am
+++ b/glib/Makefile.am
@@ -17,6 +17,7 @@ sources =		 			\
 	EnumWrapper.cs				\
 	FileUtils.cs				\
 	GException.cs				\
+	GString.cs				\
 	Idle.cs					\
 	IWrapper.cs				\
 	ListBase.cs				\