From 0cf9f4bcd0697264f887fde7ce7117715e728b36 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 3 May 2018 20:06:20 +0200 Subject: Remove gif file data if gif fails to load --- src/Cache.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index df97174..a4c740f 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -110,9 +110,10 @@ namespace dchat ImageByUrlResult loadImageFromFile(const boost::filesystem::path &filepath) { + StringView fileContent; try { - StringView fileContent = getFileContent(filepath); + fileContent = getFileContent(filepath); if(Gif::isDataGif(fileContent)) { Gif *gif = new Gif(move(fileContent)); @@ -124,17 +125,20 @@ namespace dchat if(texture->loadFromMemory(fileContent.data, fileContent.size)) { delete fileContent.data; + fileContent.data = nullptr; texture->setSmooth(true); texture->generateMipmap(); return { texture, ImageByUrlResult::Type::CACHED }; } delete texture; delete fileContent.data; + fileContent.data = nullptr; } } catch(std::exception &e) { fprintf(stderr, "Failed to load image %s, reason: %s\n", filepath.string().c_str(), e.what()); + delete fileContent.data; } return { (sf::Texture*)nullptr, ImageByUrlResult::Type::FAILED_DOWNLOAD }; } -- cgit v1.2.3