* applied patches fron eclipse bug tracker.
diff --git a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/dbgp/internal/packets/DbgpPacketReceiver.java b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/dbgp/internal/packets/DbgpPacketReceiver.java
index f677ea2..f68aa6b 100644
--- a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/dbgp/internal/packets/DbgpPacketReceiver.java
+++ b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/dbgp/internal/packets/DbgpPacketReceiver.java
@@ -57,12 +57,10 @@
 					}
 
 					long delta = end - begin;
-
-					if (delta < MIN_TIMEOUT) {
+					timeout -= delta;
+					if (timeout < MIN_TIMEOUT) {
 						break;
 					}
-
-					timeout = (int) delta;
 				}
 
 				return null;
diff --git a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptBreakpointManager.java b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptBreakpointManager.java
index 7f96e77..a7d4a4e 100644
--- a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptBreakpointManager.java
+++ b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptBreakpointManager.java
@@ -357,7 +357,7 @@
 
 	public void breakpointChanged(IBreakpoint breakpoint, IMarkerDelta delta) {
 		try {
-			if (breakpoint instanceof IScriptBreakpoint) {
+			if (breakpoint instanceof IScriptBreakpoint && delta != null) {
 				final String[] attrs = ((IScriptBreakpoint) breakpoint)
 						.getUpdatableAttributes();
 				if (hasChanges(delta, attrs)) {
diff --git a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptMethodEntryBreakpoint.java b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptMethodEntryBreakpoint.java
index 88828a9..b489a38 100644
--- a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptMethodEntryBreakpoint.java
+++ b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptMethodEntryBreakpoint.java
@@ -95,8 +95,8 @@
 
 	public String[] getUpdatableAttributes() {
 		List all = new ArrayList();
-		Arrays.asList(super.getUpdatableAttributes());
-		Arrays.asList(UPDATABLE_ATTRS);
+		all.addAll(Arrays.asList(super.getUpdatableAttributes()));
+		all.addAll(Arrays.asList(UPDATABLE_ATTRS));
 		return (String[]) all.toArray(new String[all.size()]);
 	}
 }
diff --git a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptThreadManager.java b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptThreadManager.java
index 639543d..862d2bf 100644
--- a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptThreadManager.java
+++ b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptThreadManager.java
@@ -131,7 +131,10 @@
 		synchronized (threads) {
 			threads.remove(thread);
 			DebugEventHelper.fireTerminateEvent(thread);
-			thread.getStreamProxy().close();
+			IScriptThreadStreamProxy proxy = thread.getStreamProxy();
+			if (proxy != null) {
+				proxy.close();
+			}
 			if (!hasThreads()) {
 				fireAllThreadsTerminated();
 			}
diff --git a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptWatchpoint.java b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptWatchpoint.java
index 73dddc2..603068f 100644
--- a/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptWatchpoint.java
+++ b/core/plugins/org.eclipse.dltk.debug/src/org/eclipse/dltk/internal/debug/core/model/ScriptWatchpoint.java
@@ -84,8 +84,8 @@
 
 	public String[] getUpdatableAttributes() {
 		List all = new ArrayList();
-		Arrays.asList(super.getUpdatableAttributes());
-		Arrays.asList(UPDATABLE_ATTRS);
+		all.addAll(Arrays.asList(super.getUpdatableAttributes()));
+		all.addAll(Arrays.asList(UPDATABLE_ATTRS));
 		return (String[]) all.toArray(new String[all.size()]);
 	}
 }