commit c057d4e7ee7a64954d0be7ddb544e175de6a904e
Author: Enrico Forestieri <[email protected]>
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()) {