From fc821ddd9db0e0ace4f946d08da50e2e9a9db0cc Mon Sep 17 00:00:00 2001 From: Haven1433 Date: Thu, 1 Sep 2022 20:08:00 -0500 Subject: [PATCH] Expand tables using safe data only expand the table using data that was already within the table for the new elements. This means that if you're doubling-or-more, you'll get the first element potentially multiple times (before you would get a _negative_ element, which doesn't exist) --- src/HexManiac.Core/Models/Runs/TableStreamRun.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/HexManiac.Core/Models/Runs/TableStreamRun.cs b/src/HexManiac.Core/Models/Runs/TableStreamRun.cs index 0291f101..457f4724 100644 --- a/src/HexManiac.Core/Models/Runs/TableStreamRun.cs +++ b/src/HexManiac.Core/Models/Runs/TableStreamRun.cs @@ -596,7 +596,8 @@ namespace HavenSoft.HexManiac.Core.Models.Runs { var newRun = model.RelocateForExpansion(token, run, naturalLength + length * run.ElementLength); for (int i = 0; i < run.ElementLength * length; i++) { var prevIndex = newRun.Start + naturalLength + i - newRun.ElementLength * length; - byte prevData = prevIndex > newRun.Start ? model[prevIndex] : default; + while (prevIndex < newRun.Start) prevIndex += newRun.ElementLength; + byte prevData = prevIndex >= newRun.Start ? model[prevIndex] : default; token.ChangeData(model, newRun.Start + naturalLength + i, prevData); } for (int i = naturalLength + length * run.ElementLength; i < naturalLength; i++) if (model[newRun.Start + i] != 0xFF) token.ChangeData(model, newRun.Start + i, 0xFF);