From 1bb1ce61310ed9d97f7b5ce4ba58209f4cb853c3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 5 Mar 2020 10:39:14 +0000 Subject: [PATCH] Fix double-delete of RDCFile if errors occur during import --- renderdoc/replay/capture_file.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/renderdoc/replay/capture_file.cpp b/renderdoc/replay/capture_file.cpp index 9c1d4a69b..378f91c22 100644 --- a/renderdoc/replay/capture_file.cpp +++ b/renderdoc/replay/capture_file.cpp @@ -207,7 +207,7 @@ ReplayStatus CaptureFile::OpenFile(const char *filename, const char *filetype, { StreamReader reader(FileIO::fopen(filename, "rb")); - delete m_RDC; + SAFE_DELETE(m_RDC); m_RDC = new RDCFile; ret = importer(filename, reader, m_RDC, m_StructuredData, progress); } @@ -215,7 +215,7 @@ ReplayStatus CaptureFile::OpenFile(const char *filename, const char *filetype, if(ret != ReplayStatus::Succeeded) { m_ErrorString = StringFormat::Fmt("Importer '%s' failed to import file.", filetype); - delete m_RDC; + SAFE_DELETE(m_RDC); return ret; } } @@ -227,7 +227,7 @@ ReplayStatus CaptureFile::OpenFile(const char *filename, const char *filetype, if(progress) progress(0.0f); - delete m_RDC; + SAFE_DELETE(m_RDC); m_RDC = new RDCFile; m_RDC->Open(filename); @@ -249,6 +249,7 @@ ReplayStatus CaptureFile::OpenBuffer(const bytebuf &buffer, const char *filetype { StreamReader reader(buffer); + SAFE_DELETE(m_RDC); m_RDC = new RDCFile; ret = importer(NULL, reader, m_RDC, m_StructuredData, progress); } @@ -256,7 +257,7 @@ ReplayStatus CaptureFile::OpenBuffer(const bytebuf &buffer, const char *filetype if(ret != ReplayStatus::Succeeded) { m_ErrorString = StringFormat::Fmt("Importer '%s' failed to import file.", filetype); - delete m_RDC; + SAFE_DELETE(m_RDC); return ret; } } @@ -268,6 +269,7 @@ ReplayStatus CaptureFile::OpenBuffer(const bytebuf &buffer, const char *filetype if(progress) progress(0.0f); + SAFE_DELETE(m_RDC); m_RDC = new RDCFile; m_RDC->Open(buffer);