diff -uNr build.xml build.xml --- build.xml 2009-11-05 06:15:17.000000000 -0500 +++ build.xml 2009-12-22 16:47:19.000000000 -0500 @@ -247,6 +247,7 @@ + diff -uNr patches/swtbug291128.patch patches/swtbug291128.patch --- patches/swtbug291128.patch 1969-12-31 19:00:00.000000000 -0500 +++ patches/swtbug291128.patch 2009-12-22 16:46:54.000000000 -0500 @@ -0,0 +1,32 @@ +### 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 ();