X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgraphics%2FGraphicsCacheItem.C;h=59973327d441815b6bbf1ff202eb94fc5f7c8e6c;hb=33243f70037b067f90d1574b74b34f90a2ef2aa1;hp=7fc4f801ebf2d3db3b4b4287559b818c34346a7b;hpb=3f50312db5853d7a218afe3077947ea11552aaf1;p=lyx.git diff --git a/src/graphics/GraphicsCacheItem.C b/src/graphics/GraphicsCacheItem.C index 7fc4f801eb..59973327d4 100644 --- a/src/graphics/GraphicsCacheItem.C +++ b/src/graphics/GraphicsCacheItem.C @@ -4,7 +4,7 @@ * Licence details can be found in the file COPYING. * * \author Baruch Even - * \author Herbert Voss + * \author Herbert Voß * \author Angus Leeming * * Full author contact details are available in file CREDITS. @@ -13,24 +13,20 @@ #include #include "GraphicsCacheItem.h" -#include "GraphicsImage.h" #include "GraphicsConverter.h" - -#include "support/FileMonitor.h" +#include "GraphicsImage.h" #include "debug.h" -#include "support/LAssert.h" #include "support/filetools.h" +#include "support/FileMonitor.h" #include "support/lyxlib.h" -#include #include -#include + namespace support = lyx::support; -using support::Assert; using support::ChangeExtension; using support::FileMonitor; using support::IsFileReadable; @@ -40,9 +36,12 @@ using support::getExtFromContents; using support::tempName; using support::unlink; using support::unzipFile; +using support::unzippedFileName; using support::zippedFile; using std::endl; +using std::string; + namespace lyx { namespace graphics { @@ -336,7 +335,7 @@ string const findTargetFormat(string const & from) FormatList const formats = lyx::graphics::Image::loadableFormats(); // There must be a format to load from. - Assert(!formats.empty()); + BOOST_ASSERT(!formats.empty()); // First ascertain if we can load directly with no conversion FormatList::const_iterator it = formats.begin(); @@ -383,8 +382,19 @@ void CacheItem::Impl::convertToDisplayFormat() } // Make a local copy in case we unzip it - string const filename = zippedFile(filename_) ? - unzipFile(filename_) : filename_; + string filename; + if ((zipped_ = zippedFile(filename_))) { + unzipped_filename_ = tempName(string(), filename_); + if (unzipped_filename_.empty()) { + setStatus(ErrorConverting); + lyxerr[Debug::GRAPHICS] + << "\tCould not create temporary file." << endl; + return; + } + filename = unzipFile(filename_, unzipped_filename_); + } else + filename = filename_; + string const displayed_filename = MakeDisplayPath(filename_); lyxerr[Debug::GRAPHICS] << "[GrahicsCacheItem::convertToDisplayFormat]\n" << "\tAttempting to convert image file: " << filename @@ -414,6 +424,7 @@ void CacheItem::Impl::convertToDisplayFormat() remove_loaded_file_ = true; // Remove the temp file, we only want the name... + // FIXME: This is unsafe! unlink(to_file_base); // Connect a signal to this->imageConverted and pass this signal to