--- a/src/newgrf.cpp Mon Aug 27 00:40:59 2007 +0000
+++ b/src/newgrf.cpp Mon Aug 27 00:42:30 2007 +0000
@@ -2065,20 +2065,27 @@
byte *blocklist = MallocT<byte>(1);
byte numblocks = 1;
byte firstblock = grf_load_byte(buf);
- if (firstblock == 0x7E) {
- /* read multiblock */
- numblocks = 0;
- byte nextblock = grf_load_byte(buf);
- while (nextblock != 0x7F) {
- numblocks++;
- blocklist = ReallocT(blocklist, numblocks);
- blocklist[numblocks - 1] = nextblock;
- nextblock = grf_load_byte(buf);
- }
- } else {
+ switch (firstblock) {
+ case 0x7E:
+ {
+ /* read multiblock */
+ numblocks = 0;
+ byte nextblock = grf_load_byte(buf);
+ while (nextblock != 0x7F) {
+ numblocks++;
+ blocklist = ReallocT(blocklist, numblocks);
+ blocklist[numblocks - 1] = nextblock;
+ nextblock = grf_load_byte(buf);
+ }
+ block->Initialise(blocklist, numblocks);
+ } break;
+ case 0xFF:
+ block->SetAll();
+ break;
+ default:
blocklist[0] = firstblock;
+ block->Initialise(blocklist, numblocks);
}
- block->Initialise(blocklist, numblocks);
}