Browse Source

putenv has strange semantics

David Rose 23 years ago
parent
commit
b0a9296e39
1 changed files with 6 additions and 2 deletions
  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);
 }
 
 ////////////////////////////////////////////////////////////////////