only NULL-terminate the string in GetEnvironmentVariableW if the buffer size is greater than 0. Thanks to Joseph Galbraith for the hint Modified: trunk/reactos/lib/kernel32/misc/env.c _____
Modified: trunk/reactos/lib/kernel32/misc/env.c --- trunk/reactos/lib/kernel32/misc/env.c 2005-07-13 15:46:59 UTC (rev 16554) +++ trunk/reactos/lib/kernel32/misc/env.c 2005-07-13 16:36:24 UTC (rev 16555) @@ -158,9 +158,12 @@
} } - /* make sure the string is NULL-terminated! RtlQueryEnvironmentVariable_U - only terminates it if MaximumLength < Length */ - VarValue.Buffer[VarValue.Length / sizeof(WCHAR)] = L'\0'; + if (nSize != 0) + { + /* make sure the string is NULL-terminated! RtlQueryEnvironmentVariable_U + only terminates it if MaximumLength < Length */ + VarValue.Buffer[VarValue.Length / sizeof(WCHAR)] = L'\0'; + }
return (VarValue.Length / sizeof(WCHAR)); }