changeset 11066:dc14bcf4630a draft

(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.
author peter1138 <peter1138@openttd.org>
date Sun, 08 Feb 2009 10:37:24 +0000
parents 9b1699d5a2bc
children c37ce2c6bf2e
files src/saveload/saveload.cpp
diffstat 1 files changed, 9 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -1415,35 +1415,35 @@
 	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 @@
 			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();
 	}