commit c057d4e7ee7a64954d0be7ddb544e175de6a904e
Author: Enrico Forestieri <for...@lyx.org>
Date:   Fri Mar 13 17:24:09 2015 +0100

    Make sure an unzipped file has correct extension.
    
    If a mask is missing, the TempFile class appends it to the filename.
    This may be a problem with applications relying on the extension,
    so explicitly add a mask.

diff --git a/src/graphics/GraphicsCacheItem.cpp 
b/src/graphics/GraphicsCacheItem.cpp
index 4d18ce0..9fab10d 100644
--- a/src/graphics/GraphicsCacheItem.cpp
+++ b/src/graphics/GraphicsCacheItem.cpp
@@ -362,7 +362,11 @@ bool CacheItem::Impl::tryDisplayFormat(FileName & 
filename, string & from)
 
        zipped_ = formats.isZippedFile(filename_);
        if (zipped_) {
-               TempFile tempfile(filename_.toFilesystemEncoding());
+               string tempname = 
unzippedFileName(filename_.toFilesystemEncoding());
+               string const ext = getExtension(tempname);
+               if (!ext.empty())
+                       tempname = changeExtension(tempname, "");
+               TempFile tempfile(tempname + "-XXXXXX." + ext);
                tempfile.setAutoRemove(false);
                unzipped_filename_ = tempfile.name();
                if (unzipped_filename_.empty()) {

Reply via email to