Fix Visual Studio compiler issues (#2375)

* Make sure compiler creates same object file as target of rule
* MSVC requires a string return
* Case ranges are a gnu extension which MSVC does not understand
* _dupenv_s also returns 0 if the var could not be found
See https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/dupenv-s-wdupenv-s?view=vs-2019
This commit is contained in:
Maarten De Braekeleer
2020-05-28 17:39:20 -04:00
committed by Wilson Snyder
parent 15f0f967b3
commit e8f27be200
7 changed files with 50 additions and 13 deletions
+3 -2
View File
@@ -65,8 +65,9 @@
string V3Os::getenvStr(const string& envvar, const string& defaultValue) {
#if defined(_MSC_VER)
// Note: MinGW does not offer _dupenv_s
char* envvalue;
if (_dupenv_s(&envvalue, nullptr, envvar.c_str()) == 0) {
char* envvalue = nullptr;
_dupenv_s(&envvalue, nullptr, envvar.c_str());
if (envvalue != nullptr) {
const std::string result{envvalue};
free(envvalue);
return result;