diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/mem/SubMemoryBlock.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/mem/SubMemoryBlock.java index 31d7e4a96d..f7cfb6fc05 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/mem/SubMemoryBlock.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/mem/SubMemoryBlock.java @@ -216,6 +216,7 @@ abstract class SubMemoryBlock { * @throws IOException if a database error occurs. */ protected void setParentIdAndStartingOffset(long key, long startingOffset) throws IOException { + this.startingOffset = startingOffset; record.setLongValue(MemoryMapDBAdapter.SUB_PARENT_ID_COL, key); record.setLongValue(MemoryMapDBAdapter.SUB_START_OFFSET_COL, startingOffset); adapter.updateSubBlockRecord(record); diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/database/mem/MemBlockDBTest.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/database/mem/MemBlockDBTest.java index 6ba898fd74..1dcd4592d7 100644 --- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/database/mem/MemBlockDBTest.java +++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/database/mem/MemBlockDBTest.java @@ -406,6 +406,16 @@ public class MemBlockDBTest extends AbstractGenericTest { assertEquals(10, sourceInfo.getLength()); } + @Test + public void testSplitAfterExpand() throws Exception { + FileBytes fileBytes = createFileBytes(); + MemoryBlock block1 = createFileBytesBlock(fileBytes, addr(0), 0, 50); + MemoryBlock block2 = mem.createBlock(block1, block1.getName() + ".exp", addr(50), 50); + MemoryBlock expandedBlock = mem.join(block1, block2); + mem.split(expandedBlock, addr(50)); + assertEquals(0, mem.getByte(addr(50))); + } + @Test public void testSplitFileBytes() throws Exception { FileBytes fileBytes = createFileBytes();