shell/source/win32/SysShExec.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
New commits: commit 3b1225275843d8857d4f7ac3972db467db51413a Author: Stephan Bergmann <[email protected]> AuthorDate: Wed Jan 15 17:16:02 2020 +0100 Commit: Michael Stahl <[email protected]> CommitDate: Fri Feb 7 18:34:03 2020 +0100 Remove a fragment from a file URL early on ...as ShellExecuteExW would ignore it anyway Change-Id: I969db094bb7d2ea230ac8c36eb23d71a90fbe466 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86868 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <[email protected]> (cherry picked from commit 14b36a16b225bf7c988f118d499a7287c47cd83e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86877 Reviewed-by: Mike Kaganski <[email protected]> (cherry picked from commit 51da0d22ff42b20ab38130b7874651ef136ecceb) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88208 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Michael Stahl <[email protected]> diff --git a/shell/source/win32/SysShExec.cxx b/shell/source/win32/SysShExec.cxx index 57777f7330d1..68ce2421123f 100644 --- a/shell/source/win32/SysShExec.cxx +++ b/shell/source/win32/SysShExec.cxx @@ -290,6 +290,7 @@ void SAL_CALL CSysShExec::execute( const OUString& aCommand, const OUString& aPa static_cast< XSystemShellExecute* >( this ), 3 ); + OUString preprocessed_command(aCommand); if ((nFlags & URIS_ONLY) != 0) { css::uno::Reference< css::uri::XUriReference > uri( @@ -303,8 +304,10 @@ void SAL_CALL CSysShExec::execute( const OUString& aCommand, const OUString& aPa static_cast< cppu::OWeakObject * >(this), 0); } if (uri->getScheme().equalsIgnoreAsciiCase("file")) { + // ShellExecuteExW appears to ignore the fragment of a file URL anyway, so remove it: + uri->clearFragment(); + preprocessed_command = uri->getUriReference(); OUString pathname; - uri->clearFragment(); // getSystemPathFromFileURL fails for URLs with fragment auto const e1 = osl::FileBase::getSystemPathFromFileURL(uri->getUriReference(), pathname); if (e1 != osl::FileBase::E_None) { @@ -408,7 +411,6 @@ void SAL_CALL CSysShExec::execute( const OUString& aCommand, const OUString& aPa and names no existing file (remember the jump mark sign '#' is a valid file name character we remove the jump mark, else ShellExecuteEx fails */ - OUString preprocessed_command(aCommand); if (is_system_path(preprocessed_command)) { if (has_jump_mark(preprocessed_command) && !is_existing_file(preprocessed_command)) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
