Fixed issue where freeing byte and tile arrays did not place them in proper pool resulting in invalid sized arrays being obtained

This commit is contained in:
Collin Smith
2019-12-03 00:39:41 -08:00
parent d3aa3b4fc1
commit 1075779ece

View File

@ -546,9 +546,12 @@ public class Map implements Disposable {
return new DT1.Tile[size];
}
static void free(DT1.Tile[] layer) {
if (layer == null) return;
for (int i = 0; i < sizes.length; i++) {
if (layer == null) continue;
if (layer.length <= sizes[i]) tilePools[i].free(layer);
if (layer.length <= sizes[i]) {
tilePools[i].free(layer);
return;
}
}
}
@ -566,7 +569,10 @@ public class Map implements Disposable {
}
static void free(byte[] b) {
for (int i = 0; i < sizes.length; i++) {
if (b.length <= sizes[i] * DT1.Tile.NUM_SUBTILES) bytePools[i].free(b);
if (b.length <= sizes[i] * DT1.Tile.NUM_SUBTILES) {
bytePools[i].free(b);
return;
}
}
}