diff options
Diffstat (limited to 'src/order_cmd.cpp')
-rw-r--r-- | src/order_cmd.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index a8d992aa4..0c0259705 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -1330,10 +1330,8 @@ static void Load_ORDR() if (CheckSavegameVersion(5)) { /* Pre-version 5 had an other layout for orders (uint16 instead of uint32) */ - uint16 orders[5000]; - len /= sizeof(uint16); - assert (len <= lengthof(orders)); + uint16 *orders = MallocT<uint16>(len + 1); SlArray(orders, len, SLE_UINT16); @@ -1341,11 +1339,11 @@ static void Load_ORDR() Order *order = new (i) Order(); AssignOrder(order, UnpackVersion4Order(orders[i])); } - } else if (CheckSavegameVersionOldStyle(5, 2)) { - uint32 orders[5000]; - len /= sizeof(uint32); - assert (len <= lengthof(orders)); + free(orders); + } else if (CheckSavegameVersionOldStyle(5, 2)) { + len /= sizeof(uint16); + uint16 *orders = MallocT<uint16>(len + 1); SlArray(orders, len, SLE_UINT32); @@ -1353,6 +1351,8 @@ static void Load_ORDR() Order *order = new (i) Order(); AssignOrder(order, UnpackOrder(orders[i])); } + + free(orders); } /* Update all the next pointer */ |