summaryrefslogtreecommitdiff
path: root/src/burn/engine/exeengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/exeengine.cpp')
-rw-r--r--src/burn/engine/exeengine.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/burn/engine/exeengine.cpp b/src/burn/engine/exeengine.cpp
index f7be082d..701adb74 100644
--- a/src/burn/engine/exeengine.cpp
+++ b/src/burn/engine/exeengine.cpp
@@ -695,6 +695,7 @@ extern "C" HRESULT ExeEngineRunProcess(
695 BOOL fDelayedCancel = FALSE; 695 BOOL fDelayedCancel = FALSE;
696 BOOL fFireAndForget = BURN_PACKAGE_TYPE_EXE == pPackage->type && pPackage->Exe.fFireAndForget; 696 BOOL fFireAndForget = BURN_PACKAGE_TYPE_EXE == pPackage->type && pPackage->Exe.fFireAndForget;
697 BOOL fInheritHandles = BURN_PACKAGE_TYPE_BUNDLE == pPackage->type; 697 BOOL fInheritHandles = BURN_PACKAGE_TYPE_BUNDLE == pPackage->type;
698 size_t cchCachedDirectory = 0;
698 699
699 // Always add user supplied arguments last. 700 // Always add user supplied arguments last.
700 if (wzUserArgs) 701 if (wzUserArgs)
@@ -703,6 +704,12 @@ extern "C" HRESULT ExeEngineRunProcess(
703 ExitOnFailure(hr, "Failed to append user args."); 704 ExitOnFailure(hr, "Failed to append user args.");
704 } 705 }
705 706
707 // CreateProcessW has undocumented MAX_PATH restriction for lpCurrentDirectory even when long path support is enabled.
708 if (wzCachedDirectory && FAILED(::StringCchLengthW(wzCachedDirectory, MAX_PATH - 1, &cchCachedDirectory)))
709 {
710 wzCachedDirectory = NULL;
711 }
712
706 // Make the cache location of the executable the current directory to help those executables 713 // Make the cache location of the executable the current directory to help those executables
707 // that expect stuff to be relative to them. 714 // that expect stuff to be relative to them.
708 si.cb = sizeof(si); 715 si.cb = sizeof(si);