Replace unique_ptr and add custom deleter

This commit is contained in:
Joshua Hyatt
2020-09-01 10:30:31 -06:00
parent dcf9a7b2d8
commit 638499a278
2 changed files with 15 additions and 13 deletions

View File

@@ -107,22 +107,25 @@ const aiImporterDesc *ObjFileImporter::GetInfo() const {
void ObjFileImporter::InternReadFile(const std::string &file, aiScene *pScene, IOSystem *pIOHandler) {
// Read file into memory
static const std::string mode = "rb";
IOStream *pFileStream = pIOHandler->Open(file, mode);
if (!pFileStream) {
auto streamCloser = [&](IOStream *pStream) {
pIOHandler->Close(pStream);
};
std::unique_ptr<IOStream, decltype(streamCloser)> fileStream(pIOHandler->Open(file, mode), streamCloser);
if (!fileStream.get()) {
throw DeadlyImportError("Failed to open file " + file + ".");
}
// Get the file-size and validate it, throwing an exception when fails
size_t fileSize = pFileStream->FileSize();
size_t fileSize = fileStream->FileSize();
if (fileSize < ObjMinSize) {
throw DeadlyImportError("OBJ-file is too small.");
}
IOStreamBuffer<char> streamedBuffer;
streamedBuffer.open(pFileStream);
streamedBuffer.open(fileStream.get());
// Allocate buffer and read file into it
//TextFileToBuffer( pFileStream,m_Buffer);
//TextFileToBuffer( fileStream.get(),m_Buffer);
// Get the model name
std::string modelName, folderName;
@@ -145,8 +148,6 @@ void ObjFileImporter::InternReadFile(const std::string &file, aiScene *pScene, I
streamedBuffer.close();
pIOHandler->Close(pFileStream);
// Clean up allocated storage for the next import
m_Buffer.clear();