From 56056248ac9416df92d62a547d676d80419454b8 Mon Sep 17 00:00:00 2001 From: aclement Date: Thu, 6 Jan 2011 22:20:58 +0000 Subject: [PATCH] 330170 --- asm/src/org/aspectj/asm/AsmManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/asm/src/org/aspectj/asm/AsmManager.java b/asm/src/org/aspectj/asm/AsmManager.java index 27f8ef2fa..20579df40 100644 --- a/asm/src/org/aspectj/asm/AsmManager.java +++ b/asm/src/org/aspectj/asm/AsmManager.java @@ -640,7 +640,8 @@ public class AsmManager implements IStructureModel { } StringBuffer qualifiedTypeNameFromHandle = new StringBuffer(); if (hasPackage != -1) { - qualifiedTypeNameFromHandle.append(handle.substring(hasPackage + 1, handle.indexOf(HandleProviderDelimiter.CLASSFILE.getDelimiter(), hasPackage))); + int classfileLoc = handle.indexOf(HandleProviderDelimiter.CLASSFILE.getDelimiter(), hasPackage); + qualifiedTypeNameFromHandle.append(handle.substring(hasPackage + 1, classfileLoc)); qualifiedTypeNameFromHandle.append('.'); } qualifiedTypeNameFromHandle.append(handle.substring(typeLocation + 1)); @@ -649,7 +650,7 @@ public class AsmManager implements IStructureModel { return typename; } catch (StringIndexOutOfBoundsException sioobe) { // debug for 330170 - System.err.println("Handle processing problem, the handle is: "+handle); + System.err.println("Handle processing problem, the handle is: " + handle); sioobe.printStackTrace(System.err); return ""; } @@ -904,7 +905,9 @@ public class AsmManager implements IStructureModel { * @return true if the handle contains ';' - the char indicating that it is a phantom handle */ private boolean isPhantomHandle(String handle) { - return handle.indexOf(HandleProviderDelimiter.PHANTOM.getDelimiter()) != -1; + int phantomMarker = handle.indexOf(HandleProviderDelimiter.PHANTOM.getDelimiter()); + return phantomMarker != -1 + && handle.charAt(phantomMarker - 1) == HandleProviderDelimiter.PACKAGEFRAGMENTROOT.getDelimiter(); } /** -- 2.39.5