fix: minor changes to fix loading blocks outside stored range in ThreadUnsafeCharBlocks (#2260)

- Fixes #2258
This commit is contained in:
Jordan 2023-06-04 16:22:21 +01:00 committed by GitHub
parent 97d4244126
commit 0e215e98d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -98,12 +98,19 @@ public class ThreadUnsafeCharBlocks implements IChunkSet, IBlocks {
public char[] load(int layer) {
updateSectionIndexRange(layer);
layer -= minSectionPosition;
return blocks[layer];
char[] arr = blocks[layer];
if (arr == null) {
arr = blocks[layer] = new char[FaweCache.INSTANCE.BLOCKS_PER_LAYER];
}
return arr;
}
@Nullable
@Override
public char[] loadIfPresent(int layer) {
if (layer < minSectionPosition || layer > maxSectionPosition) {
return null;
}
layer -= minSectionPosition;
return blocks[layer];
}
@ -439,8 +446,8 @@ public class ThreadUnsafeCharBlocks implements IChunkSet, IBlocks {
public IChunkSet createCopy() {
char[][] blocksCopy = new char[sectionCount][];
for (int i = 0; i < sectionCount; i++) {
blocksCopy[i] = new char[FaweCache.INSTANCE.BLOCKS_PER_LAYER];
if (blocks[i] != null) {
blocksCopy[i] = new char[FaweCache.INSTANCE.BLOCKS_PER_LAYER];
System.arraycopy(blocks[i], 0, blocksCopy[i], 0, FaweCache.INSTANCE.BLOCKS_PER_LAYER);
}
}