From ecb9f13ea823ce1a9c7b62aca68aee8090515711 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Sun, 15 Jan 2006 19:38:42 +0000 Subject: [PATCH] Bug 123745: Disassembly view can get into endless loop. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 4 ++++ .../debug/internal/core/model/DisassemblyBlock.java | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index fddf90fd2dc..c312a36f2fc 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2006-01-15 Mikhail Khodjaiants + Bug 123745: Disassembly view can get into endless loop. + * DisassemblyBlock.java + 2006-01-04 Mikhail Khodjaiants Bug 118900: Display libraries loaded in post-mortem debug. * CDebugTarget.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/DisassemblyBlock.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/DisassemblyBlock.java index 40ef60bc861..ae87256199a 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/DisassemblyBlock.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/DisassemblyBlock.java @@ -163,7 +163,7 @@ public class DisassemblyBlock implements IDisassemblyBlock, IAdaptable { element = ((ICSourceLocator)locator).findSourceElement( fileName ); } fSourceElement = element; - File file= null; + File file = null; if ( element instanceof IFile ) { file = ((IFile)element).getLocation().toFile(); } @@ -180,16 +180,21 @@ public class DisassemblyBlock implements IDisassemblyBlock, IAdaptable { } for ( int i = 0; i < result.length; ++i ) { String text = null; + boolean failed = false; int lineNumber = mi[i].getLineNumber(); if ( reader != null ) { while( reader.getLineNumber() + 1 < lineNumber ) { try { - reader.readLine(); + if ( reader.readLine() == null ) { + // break if the end of file is reached (see bug #123745) + failed = true; + break; + } } catch( IOException e ) { } } - if ( reader.getLineNumber() + 1 == lineNumber ) { + if ( !failed && reader.getLineNumber() + 1 == lineNumber ) { try { text = reader.readLine() + '\n'; }