Bug 69586 [misc] BadLocationException in AbstractLineTracker.getLineNumberOfOffset()
Eclipse 3.0 final Just saw the following exception in my log. I can't tell what I was doing at that time, though. --- snip --- org.eclipse.jface.text.BadLocationException at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:155) at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:781) at org.eclipse.jdt.internal.ui.text.correction.QuickAssistLightBulbUpdater.hasQuickFixLightBulb(QuickAssistLightBulbUpdater.java:263) at org.eclipse.jdt.internal.ui.text.correction.QuickAssistLightBulbUpdater.doSelectionChanged(QuickAssistLightBulbUpdater.java:216) at org.eclipse.jdt.internal.ui.text.correction.QuickAssistLightBulbUpdater.access$0(QuickAssistLightBulbUpdater.java:205) at org.eclipse.jdt.internal.ui.text.correction.QuickAssistLightBulbUpdater$1.selectionChanged(QuickAssistLightBulbUpdater.java:129) at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java:164) at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$3.run(SelectionListenerWithASTManager.java:136) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) --- snap ---
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistLightBulbUpdater.java
int currLine= document.getLineOfOffset(offset);
			
			
			Iterator iter= model.getAnnotationIterator();
			while (iter.hasNext()) {
				Annotation annot= (Annotation) iter.next();
				if (JavaCorrectionProcessor.isQuickFixableType(annot)) {
					
					Position pos= model.getPosition(annot);
					if (pos != null) {
						
						int startLine= document.getLineOfOffset(pos.getOffset());
						if (startLine == currLine && JavaCorrectionProcessor.hasCorrections(annot)) {
							return true;
						}
					}
				}
			}
		} catch (BadLocationException e) {
			JavaPlugin.log(e);
		} catch (IndexOutOfBoundsException e) {
			
		} catch (ConcurrentModificationException e) {
			
		}
		return false;
	}
}