diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java
index e07f094..c9d83eb 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java
@@ -59,6 +59,7 @@
 import org.eclipse.jface.text.ITextSelection;
 import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.jface.text.Region;
+import org.eclipse.jface.text.TextSelection;
 import org.eclipse.jface.text.TextViewer;
 import org.eclipse.jface.text.hyperlink.IHyperlink;
 import org.eclipse.jface.text.hyperlink.URLHyperlink;
@@ -446,4 +447,12 @@
 		textViewer.doOperation(ITextOperationTarget.PASTE);
 		assertEquals("a\na", textViewer.getTextWidget().getText());
 	}
+
+	@Test
+	public void testSetSelectionNoDoc() {
+		Shell shell= new Shell();
+		TextViewer textViewer= new TextViewer(shell, SWT.NONE);
+		textViewer.setSelection(TextSelection.emptySelection());
+		// assert no exception is thrown
+	}
 }
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java
index 9af2c0a..58768f9 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java
@@ -2299,6 +2299,9 @@
 				.map(rangeAsArray -> new Region(rangeAsArray[0], rangeAsArray[1]))
 				.filter(widgetRange -> widgetRange.getOffset() >= 0)
 				.toArray(IRegion[]::new);
+		if (widgetSelection.length == 0) {
+			return;
+		}
 		int[] widgetRanges= new int[2 * widgetSelection.length];
 		for (int i= 0; i < widgetSelection.length; i++) {
 			widgetRanges[2 * i]= widgetSelection[i].getOffset();
@@ -2434,7 +2437,7 @@
 			}
 			if (reveal)
 				revealRange(s.getOffset(), s.getLength());
-		} else if (selection instanceof IMultiTextSelection) {
+		} else if (selection instanceof IMultiTextSelection && ((IMultiTextSelection) selection).getRegions().length > 1) {
 			IMultiTextSelection multiSelection= (IMultiTextSelection) selection;
 			setSelectedRanges(Arrays.stream(multiSelection.getRegions())
 					.map(region -> new Region(region.getOffset(), region.getLength()))
