- Fixed: FileReader's FilePos is relative to the start of the file, not relative to the start

of the lump, so r3496's change to FileReader::Gets() was only valid for lumps at the start
  of a wad. (This function was still incorrect before that, though, since it made FilePos
  relative to StartPos after it had been used once.)
  * On that note, I'm not sure GetsFromBuffer() is correct either, since it ignores StartPos,
    but I don't know when this is actually used so that I could check.

SVN r3504 (trunk)
This commit is contained in:
Randy Heit 2012-04-01 04:08:38 +00:00
parent 23cda7c685
commit cf0d5b3151
1 changed files with 4 additions and 4 deletions

View File

@ -145,15 +145,15 @@ long FileReader::Read (void *buffer, long len)
char *FileReader::Gets(char *strbuf, int len)
{
if (len <= 0 || FilePos >= Length) return NULL;
if (len <= 0 || FilePos >= StartPos + Length) return NULL;
char *p = fgets(strbuf, len, File);
if (p != NULL)
{
int old = FilePos;
FilePos = ftell(File) - StartPos;
if (FilePos > Length)
FilePos = ftell(File);
if (FilePos - StartPos > Length)
{
strbuf[Length-old] = 0;
strbuf[Length - old + StartPos] = 0;
}
}
return p;