X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgraphics%2FGraphicsCacheItem.cpp;h=2e8c415f36b6709d849389281d2a084f6e031a64;hb=b63421b7dc65e0c721f8928d1330b9bb2cff43d8;hp=e4bfb019f94245d90701c66ecf7d357510d7e97a;hpb=b4f97b61cf0b257e31bcf512668ad458523d7f5a;p=lyx.git diff --git a/src/graphics/GraphicsCacheItem.cpp b/src/graphics/GraphicsCacheItem.cpp index e4bfb019f9..2e8c415f36 100644 --- a/src/graphics/GraphicsCacheItem.cpp +++ b/src/graphics/GraphicsCacheItem.cpp @@ -28,6 +28,7 @@ #include "support/lassert.h" #include "support/bind.h" +#include "support/TempFile.h" using namespace std; using namespace lyx::support; @@ -235,7 +236,7 @@ void CacheItem::Impl::reset() file_to_load_.erase(); to_.erase(); - if (image_.get()) + if (image_) image_.reset(); status_ = WaitingToLoad; @@ -316,7 +317,7 @@ static string const findTargetFormat(string const & from) FormatList const & formats = Cache::get().loadableFormats(); // There must be a format to load from. - LASSERT(!formats.empty(), /**/); + LASSERT(!formats.empty(), return string()); // Use the standard converter if we don't know the format to load // from. @@ -359,10 +360,16 @@ bool CacheItem::Impl::tryDisplayFormat(FileName & filename, string & from) return false; } - zipped_ = formats.isZippedFile(filename); + zipped_ = formats.isZippedFile(filename_); if (zipped_) { - unzipped_filename_ = FileName::tempName( - filename_.toFilesystemEncoding()); + string tempname = unzippedFileName(filename_.toFilesystemEncoding()); + string const ext = getExtension(tempname); + tempname = changeExtension(tempname, "") + "-XXXXXX"; + if (!ext.empty()) + tempname = addExtension(tempname, ext); + TempFile tempfile(tempname); + tempfile.setAutoRemove(false); + unzipped_filename_ = tempfile.name(); if (unzipped_filename_.empty()) { status_ = ErrorConverting; LYXERR(Debug::GRAPHICS, "\tCould not create temporary file."); @@ -422,7 +429,9 @@ void CacheItem::Impl::convertToDisplayFormat() // Add some stuff to create a uniquely named temporary file. // This file is deleted in loadImage after it is loaded into memory. - FileName const to_file_base = FileName::tempName("CacheItem"); + TempFile tempfile("CacheItem"); + tempfile.setAutoRemove(false); + FileName const to_file_base = tempfile.name(); remove_loaded_file_ = true; // Connect a signal to this->imageConverted and pass this signal to