Bug 127505 - [Dialogs] NPE from saveDialogBounds
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
index 082c6ba..2d1a5b9 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
@@ -889,6 +889,11 @@
 	 *         <code>false</code> if it is still open
 	 */
 	public boolean close() {
+		// If already closed, there is nothing to do.
+		// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=127505
+		if (getShell() == null || getShell().isDisposed())
+			return true;
+		
 		saveDialogBounds(getShell());
 		// Widgets are about to be disposed, so null out any state
 		// related to them that was not handled in dispose listeners.