Codechange: Use vector when migrating old savegame orders. (#11020)

This commit is contained in:
PeterN 2023-06-16 19:40:24 +01:00 committed by GitHub
parent fc2510e2ba
commit ed06c6bdcf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 8 deletions

View File

@ -143,27 +143,23 @@ struct ORDRChunkHandler : ChunkHandler {
/* Pre-version 5 had another layout for orders
* (uint16 instead of uint32) */
len /= sizeof(uint16);
uint16 *orders = MallocT<uint16>(len + 1);
std::vector<uint16> orders(len);
SlCopy(orders, len, SLE_UINT16);
SlCopy(&orders[0], len, SLE_UINT16);
for (size_t i = 0; i < len; ++i) {
Order *o = new (i) Order();
o->AssignOrder(UnpackVersion4Order(orders[i]));
}
free(orders);
} else if (IsSavegameVersionBefore(SLV_5, 2)) {
len /= sizeof(uint32);
uint32 *orders = MallocT<uint32>(len + 1);
std::vector<uint32> orders(len);
SlCopy(orders, len, SLE_UINT32);
SlCopy(&orders[0], len, SLE_UINT32);
for (size_t i = 0; i < len; ++i) {
new (i) Order(orders[i]);
}
free(orders);
}
/* Update all the next pointer */