diff --git a/eclipse-swtbug291128.patch b/eclipse-swtbug291128.patch
new file mode 100644
index 0000000..09f39ba
--- /dev/null
+++ b/eclipse-swtbug291128.patch
@@ -0,0 +1,49 @@
+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 @@
+
+
+
++
+
+
+
+
+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 ();
++
diff --git a/eclipse.spec b/eclipse.spec
index 421e339..f0be9f5 100644
--- a/eclipse.spec
+++ b/eclipse.spec
@@ -27,7 +27,7 @@ Epoch: 1
Summary: An open, extensible IDE
Name: eclipse
Version: %{eclipse_majmin}.%{eclipse_micro}
-Release: 25%{?dist}
+Release: 26%{?dist}
License: EPL
Group: Text Editors/Integrated Development Environments (IDE)
URL: http://www.eclipse.org/
@@ -48,6 +48,8 @@ Patch0: %{name}-target-platform-template.patch
# make o.e.swt.gtk.linux.ppc64 version to match ppc
Patch1: %{name}-swt-ppc64-version.patch
Patch2: %{name}-junit-dropins.patch
+# Already upstream in eclipse-build
+Patch3: %{name}-swtbug291128.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: ant ant-nodeps
@@ -1097,6 +1099,9 @@ fi
#%{_libdir}/%{name}/configuration/org.eclipse.equinox.source
%changelog
+* Tue Dec 22 2009 Andrew Overholt 1:3.5.1-26
+- Backport eclipse-build patch for e.o#291128.
+
* Tue Dec 15 2009 Alexander Kurtakov 1:3.5.1-25
- Fix o.e.jdt.junit dropins issue. RHBZ#538803 (Thanks to Patrick Higgins).