Blob Blame History Raw
diff -up ./build.xml.bug291128 ./build.xml
--- ./build.xml.bug291128	2009-12-22 15:32:52.000000000 -0500
+++ ./build.xml	2009-12-22 15:34:07.000000000 -0500
@@ -247,6 +247,7 @@
 		<patch patchfile="${basedir}/patches/donotstorebuildlogsinfiles.patch" dir="${buildDirectory}" strip="3" />
 		<patch patchfile="${basedir}/patches/donotsetjavahomeandoptimizeliblocalfile.patch" dir="${buildDirectory}" strip="3" />
 		<patch patchfile="${basedir}/patches/eclipse-pde.build-add-package-build.patch" dir="${buildDirectory}/plugins/org.eclipse.pde.build" strip="0" />
+		<patch patchfile="${basedir}/patches/swtbug291128.patch" dir="${buildDirectory}/plugins/org.eclipse.swt/Eclipse SWT Accessibility" strip="1" />
 		<patch patchfile="${basedir}/patches/gnomeproxy-makefile.patch" dir="${buildDirectory}" strip="1" />
 		<replace file="${buildDirectory}/plugins/org.eclipse.pde.build/templates/package-build/build.properties" token="/usr/share/eclipse" value="/usr/${libDir}/eclipse" />
 		<chmod dir="${buildDirectory}/plugins/org.eclipse.pde.build/templates/package-build" includes="*.sh" perm="a+x" />

diff -u /dev/null patches/swtbug291128.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/swtbug291128.patch	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,33 @@
+### Eclipse Workspace Patch 1.0
+#P org.eclipse.swt
+Index: Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
+===================================================================
+RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java,v
+retrieving revision 1.46
+diff -u -r1.46 AccessibleObject.java
+--- Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java	29 May 2009 21:30:30 -0000	1.46
++++ Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java	22 Dec 2009 17:05:15 -0000
+@@ -1176,7 +1176,12 @@
+ 	}
+ 
+ 	static AccessibleObject getAccessibleObject (int /*long*/ atkObject) {
+-		return (AccessibleObject)AccessibleObjects.get (new LONG (atkObject));
++		AccessibleObject object = (AccessibleObject)AccessibleObjects.get (new LONG (atkObject));
++		if (object == null) return null;
++		if (object.accessible == null) return null;
++		Control control = object.accessible.control;
++		if (control == null || control.isDisposed()) return null;
++		return object;
+ 	}
+ 	
+ 	AccessibleObject getChildByHandle (int /*long*/ handle) {
+@@ -1252,7 +1257,7 @@
+ 		GObjectClass objectClassStruct = new GObjectClass ();
+ 		ATK.memmove (objectClassStruct, gObjectClass);
+ 		ATK.call (objectClassStruct.finalize, atkObject);
+-		AccessibleObject object = getAccessibleObject (atkObject);
++		AccessibleObject object = (AccessibleObject)AccessibleObjects.get (new LONG (atkObject));
+ 		if (object != null) {
+ 			AccessibleObjects.remove (new LONG (atkObject));
+ 			object.release ();
+