mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-02 12:24:15 +00:00
(svn r2979) Avoid unnecessary recursion
This commit is contained in:
parent
b1e6b54f94
commit
1b16f210c2
40
oldloader.c
40
oldloader.c
@ -125,36 +125,26 @@ static byte ReadByte(LoadgameState *ls)
|
||||
byte. If that byte is negative, we have to repeat the next byte
|
||||
that many times (+1). Else, we need to read that amount of bytes.
|
||||
Works pretty good if you have many zero's behind eachother */
|
||||
int8 new_byte;
|
||||
|
||||
/* Check if we are reading a chunk */
|
||||
if (ls->chunk_size != 0) {
|
||||
ls->total_read++;
|
||||
ls->chunk_size--;
|
||||
if (ls->chunk_size == 0) {
|
||||
/* Read new chunk */
|
||||
int8 new_byte = ReadByteFromFile(ls);
|
||||
|
||||
/* If we are decoding, return the decode_char */
|
||||
if (ls->decoding)
|
||||
return ls->decode_char;
|
||||
|
||||
/* Else return byte from file */
|
||||
return ReadByteFromFile(ls);
|
||||
if (new_byte < 0) {
|
||||
/* Repeat next char for new_byte times */
|
||||
ls->decoding = true;
|
||||
ls->decode_char = ReadByteFromFile(ls);
|
||||
ls->chunk_size = -new_byte + 1;
|
||||
} else {
|
||||
ls->decoding = false;
|
||||
ls->chunk_size = new_byte + 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Read new chunk */
|
||||
new_byte = ReadByteFromFile(ls);
|
||||
ls->total_read++;
|
||||
ls->chunk_size--;
|
||||
|
||||
if (new_byte < 0) {
|
||||
/* Repeat next char for new_byte times */
|
||||
ls->decoding = true;
|
||||
ls->decode_char = ReadByteFromFile(ls);
|
||||
ls->chunk_size = -new_byte + 1;
|
||||
} else {
|
||||
ls->decoding = false;
|
||||
ls->chunk_size = new_byte + 1;
|
||||
}
|
||||
|
||||
/* Call this function again to return a byte */
|
||||
return ReadByte(ls);
|
||||
return ls->decoding ? ls->decode_char : ReadByteFromFile(ls);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user