diff -up frysk-0.4/frysk-core/frysk/scopes/Scope.java.skipdecl frysk-0.4/frysk-core/frysk/scopes/Scope.java --- frysk-0.4/frysk-core/frysk/scopes/Scope.java.skipdecl 2010-03-30 14:04:28.000000000 -0400 +++ frysk-0.4/frysk-core/frysk/scopes/Scope.java 2010-03-30 14:02:55.000000000 -0400 @@ -48,6 +48,7 @@ import lib.dwfl.DwarfDie; import frysk.debuginfo.DebugInfoFrame; import frysk.debuginfo.TypeFactory; import frysk.value.ObjectDeclaration; +import lib.dwfl.DwAt; /** * A class to represent a Scope. @@ -215,14 +216,24 @@ public class Scope public ObjectDeclaration getDeclaredObjectByName(String name){ ObjectDeclaration objectDeclaration = null; + ObjectDeclaration declaration = null; Iterator iterator = this.getObjectDeclarations().iterator(); while (iterator.hasNext()) { objectDeclaration = (ObjectDeclaration) iterator.next(); if(objectDeclaration.getName().equals(name)){ + if (objectDeclaration instanceof Variable + && ((Variable)objectDeclaration).getVariableDie().getAttrBoolean(DwAt.DECLARATION)) { + // If it is only a declaration keep searching; + // hopefully there's also a definition. + declaration = objectDeclaration; + continue; + } return objectDeclaration; } } + if (declaration != null) + return declaration; iterator = this.getEnums().iterator(); while (iterator.hasNext()) {