diff --git a/NEWS.md b/NEWS.md index 95263967e..cbbf36b2a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -28,6 +28,9 @@ * mkvmerge, mkvextract: Matroska parser: fixed a segmentation fault that occurred whenever the first level 1 element after resyncing after an error in the file structure isn't a cluster. Fixes #2211. +* mkvmerge, MKVToolNix GUI multiplexer & header editor: fixed a crash during + file type detection for attachments if MKVToolNix is installed in a path + with non-ASCII characters (e.g. German Umlauts). Fixes #2212. # Version 20.0.0 "I Am The Sun" 2018-01-15 diff --git a/installer/mkvtoolnix.nsi b/installer/mkvtoolnix.nsi index 417960bb9..cfbc419a0 100644 --- a/installer/mkvtoolnix.nsi +++ b/installer/mkvtoolnix.nsi @@ -157,11 +157,13 @@ Section "Program files" SEC01 File /r "../doc" File /r "../examples" File /r "../locale" + File /r "../share" # Delete files that might be present from older installation # if this is just an upgrade. Delete "$INSTDIR\mkv*.ico" Delete "$INSTDIR\mmg.exe" + Delete "$INSTDIR\data\magic.mgc" Delete "$INSTDIR\doc\command_line_references_and_guide.html" Delete "$INSTDIR\doc\en\mmg.html" Delete "$INSTDIR\doc\de\mmg.html" @@ -404,6 +406,7 @@ Section Uninstall RMDir /r "$INSTDIR\doc" RMDir /r "$INSTDIR\examples" RMDir /r "$INSTDIR\locale" + RMDir /r "$INSTDIR\share" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" diff --git a/src/common/mime.cpp b/src/common/mime.cpp index 0850af208..1fbc5f811 100644 --- a/src/common/mime.cpp +++ b/src/common/mime.cpp @@ -92,20 +92,14 @@ guess_type_internal(std::string ext, m = magic_open(MAGIC_MIME | MAGIC_SYMLINK); # endif // MAGIC_MIME_TYPE -# ifdef SYS_WINDOWS - auto magic_filename = (mtx::sys::get_installation_path() / "data" / "magic").string(); - if (!m || (-1 == magic_load(m, magic_filename.c_str()))) - return guess_type_by_ext(ext); -# else // defined(SYS_WINDOWS) -# ifdef MTX_APPIMAGE +# ifdef MTX_APPIMAGE auto magic_filename = (mtx::sys::get_installation_path() / ".." / "share" / "file" / "magic.mgc").string(); if (!m || (-1 == magic_load(m, magic_filename.c_str())) || (-1 == magic_load(m, nullptr))) return guess_type_by_ext(ext); -# else +# else if (!m || (-1 == magic_load(m, nullptr))) return guess_type_by_ext(ext); -# endif // defined(MTX_APPIMAGE) -# endif // defined(SYS_WINDOWS) +# endif // defined(MTX_APPIMAGE) ret = guess_type_by_content(m, ext); magic_close(m); diff --git a/src/mkvtoolnix-gui/util/installation_checker.cpp b/src/mkvtoolnix-gui/util/installation_checker.cpp index 0e10adbf6..6408ee7a5 100644 --- a/src/mkvtoolnix-gui/util/installation_checker.cpp +++ b/src/mkvtoolnix-gui/util/installation_checker.cpp @@ -51,9 +51,9 @@ InstallationChecker::runChecks() { } #if defined(SYS_WINDOWS) - auto magicFile = App::applicationDirPath() + "/data/magic.mgc"; + auto magicFile = App::applicationDirPath() + "/share/misc/magic.mgc"; if (!QFileInfo{magicFile}.exists()) - problems << Problem{ ProblemType::FileNotFound, Q("data\\magic.mgc") }; + problems << Problem{ ProblemType::FileNotFound, Q("share\\misc\\magic.mgc") }; #endif // SYS_WINDOWS diff --git a/tools/windows/populate_installer_dir.sh b/tools/windows/populate_installer_dir.sh index fafe86273..6d88094fe 100755 --- a/tools/windows/populate_installer_dir.sh +++ b/tools/windows/populate_installer_dir.sh @@ -51,7 +51,7 @@ function create_directories { cd ${tgt_dir} rm -rf * - mkdir -p examples data/sounds doc/licenses locale/libqt + mkdir -p examples data/sounds doc/licenses locale/libqt share/misc print -- " done" } @@ -67,7 +67,7 @@ function copy_files { cp src/*.exe src/mkvtoolnix-gui/*.exe installer/*.url ${tgt_dir}/ cp share/icons/windows/mkvtoolnix-gui.ico ${tgt_dir}/installer/ - cp ${mxe_usr_dir}/share/misc/magic.mgc ${tgt_dir}/data/ + cp ${mxe_usr_dir}/share/misc/magic.mgc ${tgt_dir}/share/misc/ cp share/sounds/* ${tgt_dir}/data/sounds/ touch ${tgt_dir}/data/portable-app