File tree Expand file tree Collapse file tree 4 files changed +11
-8
lines changed Expand file tree Collapse file tree 4 files changed +11
-8
lines changed Original file line number Diff line number Diff line change @@ -207,7 +207,7 @@ void CUmodelSettings::Load()
207
207
FString ConfigFile;
208
208
SetPathOption (ConfigFile, CONFIG_FILE);
209
209
210
- FArchive* Ar = new FFileReader (*ConfigFile, FAO_TextFile| FAO_NoOpenError);
210
+ FArchive* Ar = new FFileReader (*ConfigFile, FAO_NoOpenError); // can't use FAO_TextFile because of FFileReader::IsEof will not work fine with it
211
211
if (!Ar->IsOpen ())
212
212
{
213
213
delete Ar;
Original file line number Diff line number Diff line change @@ -729,23 +729,26 @@ int64 FFileReader::GetFileSize64() const
729
729
// lazy file size computation
730
730
if (FileSize < 0 )
731
731
{
732
- #if _WIN32
733
732
FFileReader* _this = const_cast <FFileReader*>(this );
734
- // don't rewind file back
735
- _this->FilePos = _this->FileSize = _filelengthi64 (fileno (f));
736
- _this->SeekPos = 0 ;
733
+ #if _WIN32
734
+ _this->FileSize = _filelengthi64 (fileno (f));
737
735
#else
738
736
fseeko64 (f, 0 , SEEK_END);
739
- FFileReader* _this = const_cast <FFileReader*>(this );
740
- // don't rewind file back
741
- _this->FilePos = _this->FileSize = ftello64 (f);
737
+ _this->FileSize = ftello64 (f);
738
+ fseeko64 (f, 0 , FilePos);
742
739
#endif // _WIN32
743
740
}
744
741
return FileSize;
745
742
}
746
743
747
744
bool FFileReader::IsEof () const
748
745
{
746
+ if (Options & FAO_TextFile)
747
+ {
748
+ // We're tracking file position as it returned by our read operations, however "text file" means
749
+ // skipping "\r" characters, so position may not match.
750
+ appError (" FFileReader::IsEof is not suitable for text files (%s)" , FullName);
751
+ }
749
752
return (BufferBytesLeft == 0 ) && (FilePos == GetFileSize64 ());
750
753
}
751
754
You can’t perform that action at this time.
0 commit comments