mirror of https://github.com/OpenTTD/OpenTTD.git
Fix: Memory leak of airport tile layout in AirportChangeInfo (prop 0A) (#8928)
This commit is contained in:
parent
adb9fa3b36
commit
83ac5aa27a
|
@ -3862,6 +3862,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B
|
|||
}
|
||||
|
||||
case 0x0A: { // Set airport layout
|
||||
byte old_num_table = as->num_table;
|
||||
free(as->rotation);
|
||||
as->num_table = buf->ReadByte(); // Number of layaouts
|
||||
as->rotation = MallocT<Direction>(as->num_table);
|
||||
|
@ -3920,6 +3921,12 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B
|
|||
tile_table[j] = CallocT<AirportTileTable>(size);
|
||||
memcpy(tile_table[j], copy_from, sizeof(*copy_from) * size);
|
||||
}
|
||||
/* Free old layouts in the airport spec */
|
||||
for (int j = 0; j < old_num_table; j++) {
|
||||
/* remove the individual layouts */
|
||||
free(as->table[j]);
|
||||
}
|
||||
free(as->table);
|
||||
/* Install final layout construction in the airport spec */
|
||||
as->table = tile_table;
|
||||
free(att);
|
||||
|
|
Loading…
Reference in New Issue