summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
diff options
context:
space:
mode:
authorSilenio Quarti <silenio>2009-12-02 23:45:25 +0000
committerSilenio Quarti <silenio>2009-12-02 23:45:25 +0000
commit43247e664c79d2fc35e6151bdc49aefe9e6dfb7a (patch)
treefcd520ed14360a95a7b9dae28ea3e6b86b192804 /bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
parent0b26303ff77a0b86a8a1c108c75167c2829b0c40 (diff)
downloadeclipse.platform.swt-43247e664c79d2fc35e6151bdc49aefe9e6dfb7a.tar.gz
eclipse.platform.swt-43247e664c79d2fc35e6151bdc49aefe9e6dfb7a.tar.xz
eclipse.platform.swt-43247e664c79d2fc35e6151bdc49aefe9e6dfb7a.zip
Bug 291128 - [Widgets] eclipse >= 3.5 crash when closing a first level modal window (Install, Run Configurations)
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
index 00b05d5394..1293d93bff 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
@@ -1176,7 +1176,12 @@ class AccessibleObject {
}
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 @@ class AccessibleObject {
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 ();