- 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

View file

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