From 9e07d6787f70b239ce28b1d012a04ce8d178e7c1 Mon Sep 17 00:00:00 2001 From: Damjan Jovanovic Date: Thu, 12 Jul 2007 07:27:25 +0200 Subject: [PATCH] ntdll: Use the win16 current directory for win16 processes. --- dlls/ntdll/env.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/env.c b/dlls/ntdll/env.c index fd6f1850017..cc2a1f59d00 100644 --- a/dlls/ntdll/env.c +++ b/dlls/ntdll/env.c @@ -29,6 +29,7 @@ #include "winternl.h" #include "wine/unicode.h" #include "wine/debug.h" +#include "thread.h" #include "ntdll_misc.h" WINE_DEFAULT_DEBUG_CHANNEL(environ); @@ -431,7 +432,13 @@ NTSTATUS WINAPI RtlCreateProcessParameters( RTL_USER_PROCESS_PARAMETERS **result RtlAcquirePebLock(); cur_params = NtCurrentTeb()->Peb->ProcessParameters; if (!DllPath) DllPath = &cur_params->DllPath; - if (!CurrentDirectoryName) CurrentDirectoryName = &cur_params->CurrentDirectory.DosPath; + if (!CurrentDirectoryName) + { + if (NtCurrentTeb()->Tib.SubSystemTib) /* FIXME: hack */ + CurrentDirectoryName = &((WIN16_SUBSYSTEM_TIB *)NtCurrentTeb()->Tib.SubSystemTib)->curdir.DosPath; + else + CurrentDirectoryName = &cur_params->CurrentDirectory.DosPath; + } if (!CommandLine) CommandLine = ImagePathName; if (!Environment) Environment = cur_params->Environment; if (!WindowTitle) WindowTitle = &empty_str;