Bug 499528 - Adding the IDebugContextProvider results in
nullpointerException in DebugWindowContextService

Change-Id: I98228b8ba15b4b2073bed446cd9b483da0c51763
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugWindowContextService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugWindowContextService.java
index 6fea942..c02a87e 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugWindowContextService.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugWindowContextService.java
@@ -247,8 +247,10 @@
         } else {
 			ListenerList<IDebugContextListener> listenerList = fListenersByPartId.get(null);
 			ListenerList<IDebugContextListener> retVal = new ListenerList<>();
-			for (IDebugContextListener iDebugContextListener : listenerList) {
-				retVal.add(iDebugContextListener);
+			if (listenerList != null) {
+				for (IDebugContextListener iDebugContextListener : listenerList) {
+					retVal.add(iDebugContextListener);
+				}
 			}
 
 			outer: for (Iterator<String> itr = fListenersByPartId.keySet().iterator(); itr.hasNext();) {
@@ -261,8 +263,12 @@
                         continue outer;
                     }
                 }
-				for (IDebugContextListener iDebugContextListener : fListenersByPartId.get(listenerPartId)) {
-					retVal.add(iDebugContextListener); // no effect if listener already present
+				ListenerList<IDebugContextListener> listenersForPart = fListenersByPartId.get(listenerPartId);
+				if (listenersForPart != null) {
+					for (IDebugContextListener iDebugContextListener : listenersForPart) {
+						// no effect if listener already present
+						retVal.add(iDebugContextListener);
+					}
 				}
 			}
 			return retVal;
@@ -277,6 +283,9 @@
 			return listenerList != null ? listenerList : new ListenerList<IDebugContextListener>();
 		} else {
 			ListenerList<IDebugContextListener> retVal = fPostListenersByPartId.get(null);
+			if (retVal == null) {
+				retVal = new ListenerList<IDebugContextListener>();
+			}
 
 			outer: for (Iterator<String> itr = fPostListenersByPartId.keySet().iterator(); itr.hasNext();) {
 				String listenerPartId = itr.next();
@@ -286,8 +295,12 @@
 						continue outer;
 					}
 				}
-				for (IDebugContextListener iDebugContextListener : fPostListenersByPartId.get(listenerPartId)) {
-					retVal.add(iDebugContextListener); // no effect if listener already present
+				ListenerList<IDebugContextListener> listenersForPart = fPostListenersByPartId.get(listenerPartId);
+				if (listenersForPart != null) {
+					for (IDebugContextListener iDebugContextListener : listenersForPart) {
+						// no effect if listener already present
+						retVal.add(iDebugContextListener);
+					}
 				}
 			}
 			return retVal;