summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2009-02-08 10:37:24 +0000
committerpeter1138 <peter1138@openttd.org>2009-02-08 10:37:24 +0000
commitbf42e60bbab55108bbeb2d923209f28badef9a35 (patch)
tree6317ebfbd3c7e8c3ea2f8e356e5554556a54a90d
parent2a66e934b81e08bb72c4d57c2877632d3d253f7d (diff)
downloadopenttd-bf42e60bbab55108bbeb2d923209f28badef9a35.tar.xz
(svn r15407) -Codechange: When loading a save game with an invalid pool index, report the problem (invalid index) rather than an impossible symptom (too many items), and report it in game instead of causing a crash.
-rw-r--r--src/saveload/saveload.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp
index 2044eb9b4..ed6f1e739 100644
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -1415,35 +1415,35 @@ static void *IntToReference(uint index, SLRefType rt)
switch (rt) {
case REF_ORDERLIST:
if (_OrderList_pool.AddBlockIfNeeded(index)) return GetOrderList(index);
- error("Orders: failed loading savegame: too many order lists");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "OrderList index out of range");
case REF_ORDER:
if (_Order_pool.AddBlockIfNeeded(index)) return GetOrder(index);
- error("Orders: failed loading savegame: too many orders");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Order index out of range");
case REF_VEHICLE:
if (_Vehicle_pool.AddBlockIfNeeded(index)) return GetVehicle(index);
- error("Vehicles: failed loading savegame: too many vehicles");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Vehicle index out of range");
case REF_STATION:
if (_Station_pool.AddBlockIfNeeded(index)) return GetStation(index);
- error("Stations: failed loading savegame: too many stations");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Station index out of range");
case REF_TOWN:
if (_Town_pool.AddBlockIfNeeded(index)) return GetTown(index);
- error("Towns: failed loading savegame: too many towns");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Town index out of range");
case REF_ROADSTOPS:
if (_RoadStop_pool.AddBlockIfNeeded(index)) return GetRoadStop(index);
- error("RoadStops: failed loading savegame: too many RoadStops");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "RoadStop index out of range");
case REF_ENGINE_RENEWS:
if (_EngineRenew_pool.AddBlockIfNeeded(index)) return GetEngineRenew(index);
- error("EngineRenews: failed loading savegame: too many EngineRenews");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "EngineRenew index out of range");
case REF_CARGO_PACKET:
if (_CargoPacket_pool.AddBlockIfNeeded(index)) return GetCargoPacket(index);
- error("CargoPackets: failed loading savegame: too many Cargo packets");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "CargoPacket index out of range");
case REF_VEHICLE_OLD:
/* Old vehicles were saved differently:
@@ -1453,7 +1453,7 @@ static void *IntToReference(uint index, SLRefType rt)
if (index == INVALID_VEHICLE) return NULL;
if (_Vehicle_pool.AddBlockIfNeeded(index)) return GetVehicle(index);
- error("Vehicles: failed loading savegame: too many vehicles");
+ SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Vehicle index out of range");
default: NOT_REACHED();
}