diff options
author | Tycho <work.tycho+git@gmail.com> | 2014-05-01 20:50:40 +0200 |
---|---|---|
committer | Tycho <work.tycho+git@gmail.com> | 2014-05-01 20:50:40 +0200 |
commit | 8780b324ff075f17358b01bc3615da0397fbe8be (patch) | |
tree | d448ab665fd50cca3861e06654f8668a89c8d953 /src/WorldStorage/WSSCompact.cpp | |
parent | Added Testing capability (diff) | |
parent | Fixed MSVC2013 compilation. (diff) | |
download | cuberite-8780b324ff075f17358b01bc3615da0397fbe8be.tar cuberite-8780b324ff075f17358b01bc3615da0397fbe8be.tar.gz cuberite-8780b324ff075f17358b01bc3615da0397fbe8be.tar.bz2 cuberite-8780b324ff075f17358b01bc3615da0397fbe8be.tar.lz cuberite-8780b324ff075f17358b01bc3615da0397fbe8be.tar.xz cuberite-8780b324ff075f17358b01bc3615da0397fbe8be.tar.zst cuberite-8780b324ff075f17358b01bc3615da0397fbe8be.zip |
Diffstat (limited to 'src/WorldStorage/WSSCompact.cpp')
-rw-r--r-- | src/WorldStorage/WSSCompact.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/WorldStorage/WSSCompact.cpp b/src/WorldStorage/WSSCompact.cpp index e6c0163ed..b770c24c0 100644 --- a/src/WorldStorage/WSSCompact.cpp +++ b/src/WorldStorage/WSSCompact.cpp @@ -466,7 +466,15 @@ cWSSCompact::cPAKFile::cPAKFile(const AString & a_FileName, int a_LayerX, int a_ for (int i = 0; i < NumChunks; i++) { sChunkHeader * Header = new sChunkHeader; - READ(*Header); + + // Here we do not use the READ macro, as it does not free the resources + // allocated with new in case of error. + if (f.Read(Header, sizeof(*Header)) != sizeof(*Header)) + { + LOGERROR("ERROR READING %s FROM FILE %s (line %d); file offset %d", "Header", m_FileName.c_str(), __LINE__, f.Tell()); + delete Header; + return; + } m_ChunkHeaders.push_back(Header); } // for i - chunk headers @@ -795,7 +803,6 @@ void cWSSCompact::cPAKFile::UpdateChunk2To3() ++index2; } InChunkOffset += index2 / 2; - index2 = 0; AString Converted(ConvertedData, ExpectedSize); |