Changeset - r22107:a2789f79b69e
[Not reviewed]
master
0 3 0
frosch - 10 years ago 2015-05-09 10:04:50
frosch@openttd.org
(svn r27278) -Fix: Handle savegames with an unexpected amount of industry-builder or NewGRF entity-mapping more gracefully.
3 files changed with 7 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/saveload/industry_sl.cpp
Show inline comments
 
@@ -160,14 +160,12 @@ static void Save_ITBL()
 
/** Load industry-type build data. */
 
static void Load_ITBL()
 
{
 
	_industry_builder.Reset();
 
	int index;
 
	for (int i = 0; i < NUM_INDUSTRYTYPES; i++) {
 
		index = SlIterateArray();
 
		assert(index == i);
 
		SlObject(_industry_builder.builddata + i, _industrytype_builder_desc);
 
	while ((index = SlIterateArray()) != -1) {
 
		if ((uint)index >= NUM_INDUSTRYTYPES) SlErrorCorrupt("Too many industry builder datas");
 
		SlObject(_industry_builder.builddata + index, _industrytype_builder_desc);
 
	}
 
	index = SlIterateArray();
 
	assert(index == -1);
 
}
 

	
 
extern const ChunkHandler _industry_chunk_handlers[] = {
src/saveload/newgrf_sl.cpp
Show inline comments
 
@@ -51,7 +51,7 @@ void Load_NewGRFMapping(OverrideManagerB
 

	
 
	int index;
 
	while ((index = SlIterateArray()) != -1) {
 
		if ((uint)index >= max_id) break;
 
		if ((uint)index >= max_id) SlErrorCorrupt("Too many NewGRF entity mappings");
 
		SlObject(&mapping.mapping_ID[index], _newgrf_mapping_desc);
 
	}
 
}
src/saveload/saveload.cpp
Show inline comments
 
@@ -1667,9 +1667,11 @@ static void SlLoadChunk(const ChunkHandl
 
		case CH_ARRAY:
 
			_sl.array_index = 0;
 
			ch->load_proc();
 
			if (_next_offs != 0) SlErrorCorrupt("Invalid array length");
 
			break;
 
		case CH_SPARSE_ARRAY:
 
			ch->load_proc();
 
			if (_next_offs != 0) SlErrorCorrupt("Invalid array length");
 
			break;
 
		default:
 
			if ((m & 0xF) == CH_RIFF) {
0 comments (0 inline, 0 general)