[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#686799: Freeze exception for gtk-sharp2



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 <cmn@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 <cmn@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
 

Reply to: