From 8c74a73f37202482427848c435157af84a99ec60 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 10 Dec 2019 17:56:12 -0330 Subject: [PATCH] Visual Studio doesn't support std::getenv, so we use Windows-specific code. --- src/common/bspf.hxx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/common/bspf.hxx b/src/common/bspf.hxx index ae4db11ef..353d2ad03 100644 --- a/src/common/bspf.hxx +++ b/src/common/bspf.hxx @@ -249,14 +249,25 @@ namespace BSPF // Coverity complains if 'getenv' is used unrestricted inline string getenv(const string& env_var) { + #if (defined BSPF_WINDOWS || defined __WIN32__) && !defined __GNUG__ + char* buf = nullptr; + size_t sz = 0; + if(_dupenv_s(&buf, &sz, env_var.c_str()) == 0 && buf != nullptr) + { + string val(buf); + free(buf); + return val; + } + return EmptyString; + #else try { const char* val = std::getenv(env_var.c_str()); - return val ? string(val) : EmptyString; } catch(...) { return EmptyString; } + #endif } } // namespace BSPF