Преглед изворни кода

putenv has strange semantics

David Rose пре 23 година
родитељ
комит
b0a9296e39
1 измењених фајлова са 6 додато и 2 уклоњено
  1. 6 2
      dtool/src/dtoolutil/executionEnvironment.cxx

+ 6 - 2
dtool/src/dtoolutil/executionEnvironment.cxx

@@ -204,8 +204,12 @@ ns_get_environment_variable(const string &var) const {
 void ExecutionEnvironment::
 ns_set_environment_variable(const string &var, const string &value) {
   _variables[var] = value;
-  string put = var + "=" + value;
-  putenv(put.c_str());
+  string putstr = var + "=" + value;
+
+  // putenv() requires us to malloc a new C-style string.
+  char *put = (char *)malloc(putstr.length() + 1);
+  strcpy(put, putstr.c_str());
+  putenv(put);
 }
 
 ////////////////////////////////////////////////////////////////////