mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-26 14:15:32 +00:00
Fix bug #4269 and avoid crash with gzipped file
Call gunzip with quoted filenames as they may contain spaces or other special characters. In computing the length of the extension, the code does not account for the prefix "unzipped_", which is added when the zipped filename does not have one of the extensions "gz", "z", "Z", or "svgz", and thus the used index is out of bounds. See also this thread: https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg207360.html (cherry picked from commit69726b832b
) (cherry picked from commit7296e0e6ba
)
This commit is contained in:
parent
41a8994da9
commit
33023e6811
@ -586,8 +586,14 @@ copyToDirIfNeeded(DocFileName const & file, string const & dir)
|
||||
// extension removed, because base.eps and base.eps.gz may
|
||||
// have different content but would get the same mangled
|
||||
// name in this case.
|
||||
// Also take into account that if the name of the zipped file
|
||||
// has no zip extension then the name of the unzipped one is
|
||||
// prefixed by "unzipped_".
|
||||
string const base = removeExtension(file.unzippedFileName());
|
||||
string::size_type const ext_len = file_in.length() - base.length();
|
||||
string::size_type const prefix_len =
|
||||
prefixIs(onlyFileName(base), "unzipped_") ? 9 : 0;
|
||||
string::size_type const ext_len =
|
||||
file_in.length() + prefix_len - base.length();
|
||||
mangled[mangled.length() - ext_len] = '.';
|
||||
}
|
||||
FileName const file_out(makeAbsPath(mangled, dir));
|
||||
|
@ -161,6 +161,9 @@ What's new
|
||||
|
||||
- Fix crash when disabling math preview (bug 11498).
|
||||
|
||||
- Quote filenames when calling gunzip and avoid a crash when the filename
|
||||
of a compressed file does not end with a proper extension (bug 4269).
|
||||
|
||||
|
||||
|
||||
* INTERNALS
|
||||
|
Loading…
Reference in New Issue
Block a user