Bug 52460 [spell checking] Spell check index out of range
I was running in console mode for other reasons, when I spotted this stack trace, that did not appear in the log. This is in M7; JDK 1.4.2_03. I just turned on spell checking in the In Progress pref pane but didn't otherwise do anything to configure. I don't know what specific action triggered this (nor did I observe any effect). java.lang.StringIndexOutOfBoundsException: String index out of range: 7 [Dynamic-linking native method java.lang.Throwable.getStackTraceDepth ... JNI] [Dynamic-linking native method java.lang.Throwable.getStackTraceElement ... JNI] at java.lang.String.charAt(String.java:444) at org.eclipse.jdt.internal.ui.text.spelling.SpellCheckIterator.nextToken (SpellCheckIterator.java:297) at org.eclipse.jdt.internal.ui.text.spelling.SpellCheckIterator.next (SpellCheckIterator.java:241) at org.eclipse.jdt.internal.ui.text.spelling.engine.DefaultSpellChecker.execute (DefaultSpellChecker.java:208) at org.eclipse.jdt.internal.ui.text.spelling.SpellReconcileStrategy.reconcile (SpellReconcileStrategy.java:347) at org.eclipse.jface.text.reconciler.CompositeReconcilingStrategy.reconcile (CompositeReconcilingStrategy.java:83) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile (JavaCompositeReconcilingStrategy.java:97) at org.eclipse.jface.text.reconciler.MonoReconciler.process (MonoReconciler.java:76) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:189)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/spelling/SpellCheckIterator.java
*/
	public SpellCheckIterator(final IDocument document, final IRegion region, final Locale locale) {
		fOffset= region.getOffset();
		fWordIterator= BreakIterator.getWordInstance(locale);
		fDelimiter= TextUtilities.getDefaultLineDelimiter(document);
		String content;
		try {
			content= document.get(region.getOffset(), region.getLength());
			if (content.startsWith(NLSElement.TAG_PREFIX))
				content= ""; 
		} catch (Exception exception) {
			content= ""; 
		}
		fContent= content;
		fWordIterator.setText(content);
		fPredecessor= fWordIterator.first();
		fSuccessor= fWordIterator.next();
		final BreakIterator iterator= BreakIterator.getSentenceInstance(locale);
		iterator.setText(content);
		int offset= iterator.current();
		while (offset != BreakIterator.DONE) {
			fSentenceBreaks.add(new Integer(offset));
			offset= iterator.next();
		}
	}
	/*
	 * @see org.eclipse.spelling.done.ISpellCheckIterator#getBegin()
	 */
	public final int getBegin() {
		return fPrevious + fOffset;