Salome HOME
[EDF30062] : Steering proxy threshold/directory without environement considerations...
[modules/kernel.git] / src / Basics / Basics_Utils.cxx
index 15f59842739c6308be81706d76e62ee7d0593884..2f0338f97274c59e673621d32a6b70a1beb1bbc8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -32,6 +32,8 @@
 #include <execinfo.h>
 #endif
 
+#include <memory>
+#include <functional>
 
 namespace Kernel_Utils
 {
@@ -144,7 +146,8 @@ namespace Kernel_Utils
 
   std::string encode_s(const wchar_t* decoded)
   {
-    return std::string(encode(decoded));
+    std::unique_ptr<char,std::function<void(char*)>> tmp((char *)encode(decoded),[](char *ptr) { delete [] ptr; });
+    return std::string(tmp.get());
   }
 
 #ifndef WIN32
@@ -172,7 +175,7 @@ namespace Kernel_Utils
   {
     std::stringstream sstr;
     sstr<<name<<'='<<value;
-    if(rewrite || std::string(getenv(name)).length() == 0)
+    if(rewrite || getenv(name) == nullptr || std::string(getenv(name)).length() == 0)
       return _putenv(sstr.str().c_str());
     else return -1;
   }