Package: release.debian.org Please consider a freeze exception for gtk-sharp2 version 2.12.10-5 which fixes an issue affecting 64-bit machines. This bugfix is the only change from 2.12.10-4.
Details about the issue can be found in bug #686798 (Gtk.IconTheme.SearchPath is not 64-bit safe). A debdiff is attached for reference. cmn
diff -Nru gtk-sharp2-2.12.10/debian/changelog gtk-sharp2-2.12.10/debian/changelog --- gtk-sharp2-2.12.10/debian/changelog 2012-09-06 01:49:14.000000000 +0200 +++ gtk-sharp2-2.12.10/debian/changelog 2012-09-06 01:43:03.000000000 +0200 @@ -1,3 +1,10 @@ +gtk-sharp2 (2.12.10-5) unstable; urgency=low + + * [b130b4f] debian/patches: add 06_IconTheme_use_glib_marshaller. + This makes IconTheme.get_SearchPath() 64-bit safe. + + -- Carlos Martín Nieto <c...@dwim.me> Wed, 05 Sep 2012 23:22:15 +0100 + gtk-sharp2 (2.12.10-4) unstable; urgency=low [ Colin Watson ] diff -Nru gtk-sharp2-2.12.10/debian/patches/06_IconTheme_use_glib_marshaller gtk-sharp2-2.12.10/debian/patches/06_IconTheme_use_glib_marshaller --- gtk-sharp2-2.12.10/debian/patches/06_IconTheme_use_glib_marshaller 1970-01-01 01:00:00.000000000 +0100 +++ gtk-sharp2-2.12.10/debian/patches/06_IconTheme_use_glib_marshaller 2012-09-05 23:50:25.000000000 +0200 @@ -0,0 +1,62 @@ +Description: IconThem: use the glib marshallers Use GLib.Marshaller + instead of doing it per hand. This makes IconTheme.get_SearchPath() + safe to use in 64-bit machines, as we don't try to make the pointer + fit into a Int32. +Author: Carlos Martín Nieto <c...@dwim.me> + +Index: gtk-sharp2/gtk/IconTheme.custom +=================================================================== +--- gtk-sharp2.orig/gtk/IconTheme.custom 2012-09-02 18:22:23.517201189 +0200 ++++ gtk-sharp2/gtk/IconTheme.custom 2012-09-05 23:48:34.244916093 +0200 +@@ -71,9 +71,6 @@ + + public string[] SearchPath { + get { +- string[] retval; +- +- unsafe { + int length; + IntPtr raw_ret; + if (IsWindowsPlatform) +@@ -81,31 +78,22 @@ + else + gtk_icon_theme_get_search_path (Handle, out raw_ret, out length); + +- int size = Marshal.SizeOf (typeof (IntPtr)); +- retval = new string[length]; +- for (int i = 0, j = 0; i < length; i++, j += size) { +- IntPtr string_ptr = Marshal.ReadIntPtr (new IntPtr (raw_ret.ToInt32 () + j)); +- retval[i] = GLib.Marshaller.Utf8PtrToString (string_ptr); +- } +- +- g_strfreev (raw_ret); +- } +- +- return retval; ++ return GLib.Marshaller.NullTermPtrToStringArray(raw_ret, true); ++ + } + set { +- int cnt_path = value == null ? 0 : value.Length; +- IntPtr[] native_path = new IntPtr [cnt_path]; +- for (int i = 0; i < cnt_path; i++) +- native_path [i] = GLib.Marshaller.StringToPtrGStrdup (value[i]); ++ IntPtr[] native_path; ++ if (value == null) ++ native_path = new IntPtr [0]; ++ else ++ native_path = GLib.Marshaller.StringArrayToNullTermPointer (value); + + if (IsWindowsPlatform) +- gtk_icon_theme_set_search_path_utf8 (Handle, native_path, native_path.Length); ++ gtk_icon_theme_set_search_path_utf8 (Handle, native_path, value.Length); + else +- gtk_icon_theme_set_search_path (Handle, native_path, native_path.Length); ++ gtk_icon_theme_set_search_path (Handle, native_path, value.Length); + +- for (int i = 0; i < native_path.Length; i++) +- GLib.Marshaller.Free (native_path[i]); ++ GLib.Marshaller.Free(native_path); + } + } + diff -Nru gtk-sharp2-2.12.10/debian/patches/series gtk-sharp2-2.12.10/debian/patches/series --- gtk-sharp2-2.12.10/debian/patches/series 2012-09-06 01:49:14.000000000 +0200 +++ gtk-sharp2-2.12.10/debian/patches/series 2012-09-02 18:19:24.000000000 +0200 @@ -2,4 +2,5 @@ 02_pcfiles 04_fix_glib_2.31_threading 05_glib_single_include +06_IconTheme_use_glib_marshaller