浏览代码

Data types in CArchiveLoader::extractToFolder() made more simple.

krs 3 年之前
父节点
当前提交
31b7a81cd2
共有 1 个文件被更改,包括 6 次插入7 次删除
  1. 6 7
      lib/filesystem/CArchiveLoader.cpp

+ 6 - 7
lib/filesystem/CArchiveLoader.cpp

@@ -215,34 +215,33 @@ void CArchiveLoader::extractToFolder(std::string outputSubFolder, CFileInputStre
 {
 	si64 currentPosition = fileStream.tell(); // save filestream position
 
-	std::unique_ptr<char[]> data = std::unique_ptr<char[]>(new char[entry.fullSize]);
+	std::vector<ui8> data(entry.fullSize);
 	fileStream.seek(entry.offset);
-	fileStream.read((ui8*)data.get(), entry.fullSize);
+	fileStream.read(data.data(), entry.fullSize);
 
 	bfs::path extractedFilePath = createExtractedFilePath(outputSubFolder, entry.name);
 
 	// writeToOutputFile
 	std::ofstream out(extractedFilePath.string(), std::ofstream::binary);
 	out.exceptions(std::ifstream::failbit | std::ifstream::badbit);
-	out.write(data.get(), entry.fullSize);
+	out.write((char*)&data[0], entry.fullSize);
 
 	fileStream.seek(currentPosition); // restore filestream position
 }
 
 void CArchiveLoader::extractToFolder(std::string outputSubFolder, const std::string & mountPoint, ArchiveEntry entry)
 {
-
 	std::unique_ptr<CInputStream> inputStream = load(ResourceID(mountPoint + entry.name));
 
-	std::unique_ptr<char[]> data = std::unique_ptr<char[]>(new char[entry.fullSize]);
-	inputStream->read((ui8*)data.get(), entry.fullSize);
+	std::vector<ui8> data(entry.fullSize);
+	inputStream->read(data.data(), entry.fullSize);
 
 	bfs::path extractedFilePath = createExtractedFilePath(outputSubFolder, entry.name);
 
 	// writeToOutputFile
 	std::ofstream out(extractedFilePath.string(), std::ofstream::binary);
 	out.exceptions(std::ifstream::failbit | std::ifstream::badbit);
-	out.write(data.get(), entry.fullSize);
+	out.write((char*)&data[0], entry.fullSize);
 }
 
 bfs::path createExtractedFilePath(const std::string & outputSubFolder, const std::string & entryName)