diff --git a/Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RecoveredClassHelper.java b/Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RecoveredClassHelper.java index 5371244860f..5d02e260a79 100644 --- a/Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RecoveredClassHelper.java +++ b/Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RecoveredClassHelper.java @@ -3172,26 +3172,18 @@ public StringBuffer createParentStringBuffer(RecoveredClass recoveredClass) if (recoveredClass.hasParentClass()) { - // use this to get direct parents - Map> classHierarchyMap = - recoveredClass.getClassHierarchyMap(); - Set directParents = classHierarchyMap.keySet(); - - // use this to get correct parent order and to get the type of parent Map parentToBaseTypeMap = recoveredClass.getParentToBaseTypeMap(); - Set ancestors = parentToBaseTypeMap.keySet(); - for (RecoveredClass ancestor : ancestors) { - monitor.checkCancelled(); - if (directParents.contains(ancestor)) { - Boolean isVirtualParent = parentToBaseTypeMap.get(ancestor); - if (isVirtualParent != null && isVirtualParent) { - classString = classString.concat(" : virtual " + ancestor.getName()); - } - else { - classString = classString.concat(" : " + ancestor.getName()); - } + List parentList = recoveredClass.getParentList(); + for (RecoveredClass parent : parentList) { + monitor.checkCancelled(); + Boolean isVirtualParent = parentToBaseTypeMap.get(parent); + if (isVirtualParent != null && isVirtualParent) { + classString = classString.concat(" : virtual " + parent.getName()); + } + else { + classString = classString.concat(" : " + parent.getName()); } } }