summaryrefslogtreecommitdiffstats
path: root/src/WorldStorage
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-04-27 17:00:37 +0200
committerMattes D <github@xoft.cz>2014-04-27 17:00:37 +0200
commita0f6149d0551c532896db2b920333718f68888d8 (patch)
tree27826e519c342e395e535190201a47e4a65e74e0 /src/WorldStorage
parentMerge pull request #941 from archshift/master (diff)
parentFixed unitialized member in gZipFile (CID 43673) (diff)
downloadcuberite-a0f6149d0551c532896db2b920333718f68888d8.tar
cuberite-a0f6149d0551c532896db2b920333718f68888d8.tar.gz
cuberite-a0f6149d0551c532896db2b920333718f68888d8.tar.bz2
cuberite-a0f6149d0551c532896db2b920333718f68888d8.tar.lz
cuberite-a0f6149d0551c532896db2b920333718f68888d8.tar.xz
cuberite-a0f6149d0551c532896db2b920333718f68888d8.tar.zst
cuberite-a0f6149d0551c532896db2b920333718f68888d8.zip
Diffstat (limited to 'src/WorldStorage')
-rw-r--r--src/WorldStorage/WSSCompact.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/WorldStorage/WSSCompact.cpp b/src/WorldStorage/WSSCompact.cpp
index c07c9e96f..359bac4a8 100644
--- a/src/WorldStorage/WSSCompact.cpp
+++ b/src/WorldStorage/WSSCompact.cpp
@@ -468,7 +468,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