Hi, SystemStats::getEnvironmentVariable
often fails to return environment variables on Windows. In a sequence like this:
String a = SystemStats::getEnvironmentVariable("A", "");
String b = SystemStats::getEnvironmentVariable("B", "");
String c = SystemStats::getEnvironmentVariable("C", "");
If variable A
is not defined then b
and c
will also be empty even if variables B
and C
are defined.
DWORD len = GetEnvironmentVariableW (name.toWideCharPointer(), nullptr, 0);
if (GetLastError() == ERROR_ENVVAR_NOT_FOUND)
return String (defaultValue);
That’s wrong, since successful calls do not update the value returned by GetLastError()
.
According to MSDN you need to check if len
is 0.