Bug 318893: [implementation] NPE in SourceViewer
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java
index 7a557c5..e3c48d1 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java
@@ -134,6 +134,8 @@
 			if (fOverviewRuler != null && fIsOverviewRulerVisible) {
 				overviewRulerWidth= fOverviewRuler.getWidth();
 				width -= overviewRulerWidth + fGap;
+				if (scrollbarHeight <= 0)
+					scrollbarHeight= overviewRulerWidth;
 			}
 
 			if (fVerticalRuler != null && fIsVerticalRulerVisible) {
@@ -180,6 +182,10 @@
 		 * @since 3.6
 		 */
 		private int[] getVerticalScrollArrowHeights(StyledText textWidget, int bottomOffset) {
+			ScrollBar verticalBar= textWidget.getVerticalBar();
+			if (verticalBar == null)
+				return new int[] { 0, 0 };
+			
 			int[] arrowHeights= computeScrollArrowHeights(textWidget, bottomOffset);
 			if (arrowHeights[0] > 0 || arrowHeights[1] > 0) {
 				fScrollArrowHeights= arrowHeights;
@@ -192,7 +198,7 @@
 					int fakeHeight= 1000;
 					bottomOffset= bottomOffset - originalSize.y + fakeHeight;
 					textWidget.setSize(originalSize.x, fakeHeight);
-					textWidget.getVerticalBar().setValues(0, 0, 1 << 30, 1, 10, 10);
+					verticalBar.setValues(0, 0, 1 << 30, 1, 10, 10);
 					arrowHeights= computeScrollArrowHeights(textWidget, bottomOffset);
 					fScrollArrowHeights= arrowHeights;
 				} finally {