diff options
author | Tor Lillqvist <tlillqvist@novell.com> | 2011-01-25 16:24:07 +0200 |
---|---|---|
committer | Tor Lillqvist <tlillqvist@novell.com> | 2011-01-25 16:35:41 +0200 |
commit | dd9197c7fb95be7c1eb1fe25bf78eadcb447b77c (patch) | |
tree | 05096b1b1cf5ffa710d4a5912598ee1ee3484286 | |
parent | Code-cleanup for testintrosp.cxx. (diff) | |
download | core-dd9197c7fb95be7c1eb1fe25bf78eadcb447b77c.tar.gz core-dd9197c7fb95be7c1eb1fe25bf78eadcb447b77c.zip |
Manipulate also the C runtime's environment
Fixes fdo#33355.
-rw-r--r-- | sal/osl/w32/process.cxx | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sal/osl/w32/process.cxx b/sal/osl/w32/process.cxx index 6506b62dbd61..3fec90a8483a 100644 --- a/sal/osl/w32/process.cxx +++ b/sal/osl/w32/process.cxx @@ -28,6 +28,7 @@ #define UNICODE #include "system.h" +#include <string.h> #ifdef _MSC_VER #pragma warning(push,1) /* disable warnings within system headers */ #endif @@ -419,7 +420,15 @@ oslProcessError SAL_CALL osl_setEnvironment(rtl_uString *ustrVar, rtl_uString *u LPCWSTR lpName = reinterpret_cast<LPCWSTR>(ustrVar->buffer); LPCWSTR lpValue = reinterpret_cast<LPCWSTR>(ustrValue->buffer); if (SetEnvironmentVariableW(lpName, lpValue)) + { + wchar_t *buffer = new wchar_t[wcslen(lpName) + 1 + wcslen(lpValue) + 1]; + wcscpy(buffer, lpName); + wcscat(buffer, L"="); + wcscat(buffer, lpValue); + _wputenv(buffer); + delete[] buffer; return osl_Process_E_None; + } return osl_Process_E_Unknown; } @@ -429,7 +438,14 @@ oslProcessError SAL_CALL osl_clearEnvironment(rtl_uString *ustrVar) //process's environment. LPCWSTR lpName = reinterpret_cast<LPCWSTR>(ustrVar->buffer); if (SetEnvironmentVariableW(lpName, NULL)) + { + wchar_t *buffer = new wchar_t[wcslen(lpName) + 1 + 1]; + wcscpy(buffer, lpName); + wcscat(buffer, L"="); + _wputenv(buffer); + delete[] buffer; return osl_Process_E_None; + } return osl_Process_E_Unknown; } |