diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyViewerConfiguration.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyViewerConfiguration.java
index c11fbe38d03..847b6db27df 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyViewerConfiguration.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyViewerConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 Wind River Systems and others.
+ * Copyright (c) 2007, 2009 Wind River Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -107,10 +107,10 @@ public class DisassemblyViewerConfiguration extends TextSourceViewerConfiguratio
 	public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) {
 		IHyperlinkDetector[] inheritedDetectors= super.getHyperlinkDetectors(sourceViewer);
 		
-		if (fPart == null)
+		if (fPart == null || inheritedDetectors == null)
 			return inheritedDetectors;
 		
-		int inheritedDetectorsLength= inheritedDetectors != null ? inheritedDetectors.length : 0;
+		int inheritedDetectorsLength= inheritedDetectors.length;
 		IHyperlinkDetector[] detectors= new IHyperlinkDetector[inheritedDetectorsLength + 1];
 		detectors[0]= new DisassemblyHyperlinkDetector(fPart);
 		for (int i= 0; i < inheritedDetectorsLength; i++) {
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java
index 84666b0351c..beaac969834 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 Wind River Systems and others.
+ * Copyright (c) 2007, 2009 Wind River Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -55,6 +55,8 @@ public class DisassemblyDocument extends REDDocument {
 	private int fNumberOfInstructions;
 	private double fMeanSizeOfInstructions = 4;
 
+	private long fErrorAlignment = 0x1L;
+
 	public DisassemblyDocument() {
 		super();
 	}
@@ -1020,7 +1022,7 @@ public class DisassemblyDocument extends REDDocument {
 	public AddressRangePosition insertErrorLine(AddressRangePosition pos, BigInteger address, BigInteger length, String line)
 		throws BadLocationException {
 		int hashCode = line.hashCode();
-		final long alignment = 0x1L;
+		final long alignment = fErrorAlignment;
 		if (alignment > 1 && !(pos instanceof ErrorPosition)) {
 			AddressRangePosition before = getPositionOfAddress(address.subtract(BigInteger.ONE));
 			if (before instanceof ErrorPosition && before.hashCode() == hashCode && before.offset + before.length == pos.offset) {
@@ -1050,7 +1052,7 @@ public class DisassemblyDocument extends REDDocument {
 				}
 			}
 			AddressRangePosition after = getPositionOfAddress(address.add(length));
-			if (after instanceof ErrorPosition && after.hashCode() == hashCode && pos.offset + pos.length == after.offset) {
+			if (after instanceof ErrorPosition && after.hashCode() == hashCode && pos != null && pos.offset + pos.length == after.offset) {
 				assert after.fAddressOffset == address.add(length);
 				assert pos.fAddressOffset.add(pos.fAddressLength).compareTo(after.fAddressOffset) == 0;
 				// merge with next error position
@@ -1079,16 +1081,6 @@ public class DisassemblyDocument extends REDDocument {
 		while (length.compareTo(BigInteger.ZERO) > 0) {
 			AddressRangePosition errorPos = new ErrorPosition(0, 0, address, posLen, hashCode);
 			String errorLine = buildDisassemblyLine(address, null, line);
-			// TLEHACK: check for error messages, which occur only temporarily:
-			// "Target is busy. Try again later"
-			// "Cannot Perform requested Operation"
-			if (line.startsWith("Target is busy") || line.startsWith("Cannot perform")) {  //$NON-NLS-1$  //$NON-NLS-2$
-				// try again only once...
-				if (!(pos instanceof ErrorPosition)) {
-					errorLine = "...\n"; //$NON-NLS-1$
-					errorPos.fValid = false;
-				}
-			}
 			errorPos.length = errorLine.length();
 			pos = insertAddressRange(pos, errorPos, errorLine, true);
 			addDisassemblyPosition(errorPos);
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/presentation/CSourcePresentationCreator.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/presentation/CSourcePresentationCreator.java
index 4e32881569e..6616216582e 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/presentation/CSourcePresentationCreator.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/presentation/CSourcePresentationCreator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 Wind River Systems and others.
+ * Copyright (c) 2007, 2009 Wind River Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,9 +17,7 @@ import org.eclipse.cdt.core.model.ICModel;
 import org.eclipse.cdt.core.model.ICProject;
 import org.eclipse.cdt.core.model.ILanguage;
 import org.eclipse.cdt.core.model.ITranslationUnit;
-import org.eclipse.cdt.internal.ui.editor.ITranslationUnitEditorInput;
-import org.eclipse.cdt.internal.ui.text.CTextTools;
-import org.eclipse.cdt.internal.ui.util.EditorUtility;
+import org.eclipse.cdt.ui.CDTUITools;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.cdt.ui.text.AsmSourceViewerConfiguration;
 import org.eclipse.cdt.ui.text.CSourceViewerConfiguration;
@@ -53,7 +51,6 @@ import org.eclipse.ui.IEditorInput;
 /**
  * A presentation creator based on CDT syntax highlighting.
  */
-@SuppressWarnings("restriction")
 public class CSourcePresentationCreator extends PresentationReconciler implements ISourcePresentationCreator, IPropertyChangeListener {
 
 	/**
@@ -245,10 +242,10 @@ public class CSourcePresentationCreator extends PresentationReconciler implement
 		if (language != null) {
 			fViewer= textViewer;
 			fPreferenceStore= CUIPlugin.getDefault().getCombinedPreferenceStore();
-			CTextTools textTools = CUIPlugin.getDefault().getTextTools();
-			fSourceViewerConfiguration= new CustomCSourceViewerConfiguration(textTools.getColorManager(), fPreferenceStore, language);
+			final IColorManager colorManager= CDTUITools.getColorManager();
+			fSourceViewerConfiguration= new CustomCSourceViewerConfiguration(colorManager, fPreferenceStore, language);
 			setDocumentPartitioning(fSourceViewerConfiguration.getConfiguredDocumentPartitioning(null));
-			initializeDamagerRepairer(storage, textTools.getColorManager(), fPreferenceStore);
+			initializeDamagerRepairer(storage, colorManager, fPreferenceStore);
 			fPreferenceStore.addPropertyChangeListener(this);
 		}
 	}
@@ -364,9 +361,9 @@ public class CSourcePresentationCreator extends PresentationReconciler implement
 			} catch (CModelException e) {
 			}
 		} else {
-			IEditorInput input= EditorUtility.getEditorInputForLocation(storage.getFullPath(), null);
-			if (input instanceof ITranslationUnitEditorInput) {
-				tUnit= ((ITranslationUnitEditorInput)input).getTranslationUnit();
+			IEditorInput input= CDTUITools.getEditorInputForLocation(storage.getFullPath(), null);
+			if (input != null) {
+				tUnit= (ITranslationUnit) input.getAdapter(ITranslationUnit.class);
 			}
 		}
 		if (tUnit != null) {
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/text/REDTextStore.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/text/REDTextStore.java
index cbd85dc3763..f0e0fe4cdb9 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/text/REDTextStore.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/text/REDTextStore.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 Wind River Systems and others.
+ * Copyright (c) 2007, 2009 Wind River Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -53,7 +53,6 @@ public final class REDTextStore implements ITextStore {
 			fText = text;
 			setName("Swapping editor buffer to disk"); //$NON-NLS-1$
 			setPriority(Job.LONG);
-//			setSystem(true);
 		}
 
 		@Override
@@ -449,7 +448,6 @@ public final class REDTextStore implements ITextStore {
 	 */
 	private final static class RunSpec {
 		public LinkedRun fRun = null;
-		public int fOrg = -1;
 		public int fOff = -1;
 		public boolean isValid() {
 			return fRun != null;
@@ -529,7 +527,7 @@ public final class REDTextStore implements ITextStore {
 			cur = cur.fNext;
 		}
 		if (pos != 0) {
-			while (pos - curPos <= 0) {
+			while (pos - curPos <= 0 && cur != null) {
 				cur = cur.fPrev;
 				curPos -= cur.fLength;
 			}
@@ -542,7 +540,6 @@ public final class REDTextStore implements ITextStore {
 			spec = fRunSpec;
 		}
 		spec.fRun = cur;
-		spec.fOrg = curPos;
 		spec.fOff = pos - curPos;
 
 		return spec;