diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/generic/util/datastruct/SemisparseByteArray.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/generic/util/datastruct/SemisparseByteArray.java index 16264075b2..c9ac44561f 100644 --- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/generic/util/datastruct/SemisparseByteArray.java +++ b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/generic/util/datastruct/SemisparseByteArray.java @@ -212,10 +212,13 @@ public class SemisparseByteArray { */ public synchronized void putData(final long loc, final byte[] data, final int offset, final int length) { + if (length == 0) { + return; + } if (length < 0) { throw new IllegalArgumentException("length: " + length); } - if (Long.compareUnsigned(loc + length, loc) < 0) { + if (Long.compareUnsigned(loc + length - 1, loc) < 0) { throw new IndexOutOfBoundsException("given offset and length would exceed ULONG_MAX"); } UnsignedLong uLoc = UnsignedLong.fromLongBits(loc);