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 /* Pre-version 5 had another layout for orders
* (uint16 instead of uint32) */ * (uint16 instead of uint32) */
len /= sizeof(uint16); 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) { for (size_t i = 0; i < len; ++i) {
Order *o = new (i) Order(); Order *o = new (i) Order();
o->AssignOrder(UnpackVersion4Order(orders[i])); o->AssignOrder(UnpackVersion4Order(orders[i]));
} }
free(orders);
} else if (IsSavegameVersionBefore(SLV_5, 2)) { } else if (IsSavegameVersionBefore(SLV_5, 2)) {
len /= sizeof(uint32); 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) { for (size_t i = 0; i < len; ++i) {
new (i) Order(orders[i]); new (i) Order(orders[i]);
} }
free(orders);
} }
/* Update all the next pointer */ /* Update all the next pointer */