Fix infinite loop re-sizing block state internal ID array.

This commit is contained in:
wizjany 2019-06-28 15:18:53 -04:00
parent efc4d7cba1
commit 542f87b8f7

View File

@ -57,8 +57,12 @@ public final class BlockStateIdAccess {
OptionalInt id = getBlockStateId(blockState);
if (id.isPresent()) {
int i = id.getAsInt();
while (i >= blockStates.length) {
blockStates = Arrays.copyOf(blockStates, blockStates.length + blockStates.length >> 1);
if (i >= blockStates.length) {
int curLength = blockStates.length;
do {
curLength += curLength >> 1;
} while (i >= curLength);
blockStates = Arrays.copyOf(blockStates, curLength);
}
BlockState existing = blockStates[i];
checkState(existing == null || existing == blockState,