From b0b813edf9e1d54de18bb60d69e33d558e21d46f Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Mon, 12 Feb 2024 16:10:24 -0500 Subject: [PATCH] GP-3632 Corrected pointer and array replacement issues --- .../src/main/java/ghidra/program/database/data/ArrayDB.java | 2 +- .../src/main/java/ghidra/program/database/data/PointerDB.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ArrayDB.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ArrayDB.java index 6aeffd512d..9b7ca2151b 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ArrayDB.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ArrayDB.java @@ -282,7 +282,7 @@ class ArrayDB extends DataTypeDB implements Array { new ArrayDataType(newDt, getNumElements(), newElementLength, dataMgr); DataType existingArray = dataMgr.getDataType(newDt.getCategoryPath(), newArray.getName()); - if (existingArray != null) { + if (existingArray != null && existingArray != this) { // avoid duplicate array - replace this array with existing one dataMgr.addDataTypeToReplace(this, existingArray); return; diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/PointerDB.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/PointerDB.java index 9b659f86e5..21aa3c398c 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/PointerDB.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/PointerDB.java @@ -367,7 +367,7 @@ class PointerDB extends DataTypeDB implements Pointer { hasLanguageDependantLength() ? -1 : getLength(), dataMgr); DataType existingPtr = dataMgr.getDataType(newDt.getCategoryPath(), newPtr.getName()); - if (existingPtr != null) { + if (existingPtr != null && existingPtr != this) { // avoid duplicate pointer - replace this pointer with existing one dataMgr.addDataTypeToReplace(this, existingPtr); return;