From 7058d8bb4c8316915ca12f415b42227464c109ef Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 18 May 2013 21:25:26 +0200 Subject: Core/Collision: Corrected logic for closing source file in WorldModel_Raw::Read, fixes resource leak if method succeeds and prevents double free if it fails. Closes #9823 --- src/server/collision/Maps/TileAssembler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/server/collision/Maps/TileAssembler.cpp') diff --git a/src/server/collision/Maps/TileAssembler.cpp b/src/server/collision/Maps/TileAssembler.cpp index 8cd6d92beb2..53fd2b98439 100644 --- a/src/server/collision/Maps/TileAssembler.cpp +++ b/src/server/collision/Maps/TileAssembler.cpp @@ -500,7 +500,7 @@ namespace VMAP char ident[8]; ident[7] = 0; int readOperation = 0; - + READ_OR_RETURN(&ident, 7); CMP_OR_RETURN(ident, RAW_VMAP_MAGIC); @@ -517,7 +517,7 @@ namespace VMAP for (uint32 g = 0; g < groups && succeed; ++g) succeed = groupsArray[g].Read(rf); - if (!succeed) /// rf will be freed inside Read if the function had any errors. + if (succeed) /// rf will be freed inside Read if the function had any errors. fclose(rf); return succeed; } -- cgit v1.2.3 From 8e339e855879aee5b8674d19dbaed69d8ae7d34c Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 18 May 2013 21:33:03 +0200 Subject: Reverted part of 60a88a08f5e85c1986aee49f9bfdbf8fa254f370 All 8 bytes must be read from file to match output from vmap4extractor --- src/server/collision/Maps/TileAssembler.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/server/collision/Maps/TileAssembler.cpp') diff --git a/src/server/collision/Maps/TileAssembler.cpp b/src/server/collision/Maps/TileAssembler.cpp index 53fd2b98439..aca7c02e79f 100644 --- a/src/server/collision/Maps/TileAssembler.cpp +++ b/src/server/collision/Maps/TileAssembler.cpp @@ -498,10 +498,9 @@ namespace VMAP } char ident[8]; - ident[7] = 0; int readOperation = 0; - READ_OR_RETURN(&ident, 7); + READ_OR_RETURN(&ident, 8); CMP_OR_RETURN(ident, RAW_VMAP_MAGIC); // we have to read one int. This is needed during the export and we have to skip it here -- cgit v1.2.3