(svn r2979) Avoid unnecessary recursion

This commit is contained in:
tron 2005-09-23 20:20:08 +00:00
parent b1e6b54f94
commit 1b16f210c2

View File

@ -125,23 +125,10 @@ static byte ReadByte(LoadgameState *ls)
byte. If that byte is negative, we have to repeat the next byte 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. that many times (+1). Else, we need to read that amount of bytes.
Works pretty good if you have many zero's behind eachother */ 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 we are decoding, return the decode_char */
if (ls->decoding)
return ls->decode_char;
/* Else return byte from file */
return ReadByteFromFile(ls);
}
if (ls->chunk_size == 0) {
/* Read new chunk */ /* Read new chunk */
new_byte = ReadByteFromFile(ls); int8 new_byte = ReadByteFromFile(ls);
if (new_byte < 0) { if (new_byte < 0) {
/* Repeat next char for new_byte times */ /* Repeat next char for new_byte times */
@ -152,9 +139,12 @@ static byte ReadByte(LoadgameState *ls)
ls->decoding = false; ls->decoding = false;
ls->chunk_size = new_byte + 1; ls->chunk_size = new_byte + 1;
} }
}
/* Call this function again to return a byte */ ls->total_read++;
return ReadByte(ls); ls->chunk_size--;
return ls->decoding ? ls->decode_char : ReadByteFromFile(ls);
} }
/** /**