From 750cfc699459856c22c7c51cb24636c100dd49e8 Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Mon, 27 Mar 2023 09:44:35 -0400 Subject: [PATCH] GP-3263 - Fixed exception in data type finder --- .../datatype/finder/DecompilerReference.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/extension/datatype/finder/DecompilerReference.java b/Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/extension/datatype/finder/DecompilerReference.java index eb30d9d0d2..820110696c 100644 --- a/Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/extension/datatype/finder/DecompilerReference.java +++ b/Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/extension/datatype/finder/DecompilerReference.java @@ -156,15 +156,20 @@ public abstract class DecompilerReference { public static DataType getFieldDataType(ClangFieldToken field) { DataType fieldDt = field.getDataType(); fieldDt = DecompilerReference.getBaseType(fieldDt); - if (fieldDt instanceof Structure) { - Structure parent = (Structure) fieldDt; - int offset = field.getOffset(); - int n = parent.getLength(); - if (offset >= 0 && offset < n) { - DataTypeComponent dtc = parent.getComponentContaining(field.getOffset()); + if (!(fieldDt instanceof Structure)) { + return fieldDt; + } + + Structure parent = (Structure) fieldDt; + int offset = field.getOffset(); + int n = parent.getLength(); + if (offset >= 0 && offset < n) { + DataTypeComponent dtc = parent.getComponentContaining(field.getOffset()); + if (dtc != null) { fieldDt = dtc.getDataType(); } } + return fieldDt; }