mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-07-13 09:17:52 +07:00
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:
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user