string getenv(const string &name)
{
MutexLock _lock(env_mutex());
- char buffer[1024];
- size_t result;
- if(!getenv_s(&result, buffer, sizeof(buffer), name.c_str()))
- return string(buffer, (result>0 ? result-1 : 0));
- else
- return string();
+ string value;
+ size_t length = 0;
+ if(!getenv_s(&length, nullptr, 0, name.c_str()))
+ {
+ value.resize(length);
+ if(!getenv_s(&length, &value[0], value.size(), name.c_str()))
+ {
+ if(!value.empty() && !value.back())
+ value.pop_back();
+ return value;
+ }
+ }
+ return string();
}
void setenv(const string &name, const string &value)