From: "Chip Davis" Subject: Re: [PATCH] add: SetEnvironmentStringsW Message-Id: <76b57b35ea47e2dae56ef47123363f6d@codeweavers.com> Date: Fri, 17 Jan 2020 22:43:48 +0000 In-Reply-To: References: January 16, 2020 1:52 PM, "Frank Uhlig" wrote: > diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec > index a14bed04be..8f48a5fdb1 100644 > --- a/dlls/kernel32/kernel32.spec > +++ b/dlls/kernel32/kernel32.spec > @@ -1387,7 +1387,7 @@ > # @ stub SetDynamicTimeZoneInformation > @ stdcall -import SetEndOfFile(long) > # @ stub SetEnvironmentStringsA > -# @ stub SetEnvironmentStringsW > +@ stdcall -import SetEnvironmentStringsW (long ptr wstr) This is wrong. It's supposed to be: @ stdcall -import SetEnvironmentStringsW(ptr) because the function prototype is: BOOL WINAPI SetEnvironmentStringsW(LPWCH); Similarly for the other spec files. Since it's a double-null-terminated string, I don't think this should use 'wstr' here. I suspect you were unable to reproduce the build failures because you don't have a MinGW build environment installed. If you tried running with relay tracing enabled, you'd see two extra bits of garbage anytime SetEnvironmentStringsW() were called. And on 64-bit, it would likely crash due to the relay tracing mechanism clipping the upper half of a 64-bit pointer. > @ stdcall -import SetEnvironmentVariableA(str str) > @ stdcall -import SetEnvironmentVariableW(wstr wstr) > @ stdcall -import SetErrorMode(long) Chip