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