diff options
author | Caol?n McNamara <cmc@openoffice.org> | 2010-07-08 20:53:56 +0100 |
---|---|---|
committer | Caol?n McNamara <cmc@openoffice.org> | 2010-07-08 20:53:56 +0100 |
commit | e587dbf204b39022391e09eeeb2d25182a0e60b5 (patch) | |
tree | d2c440d5b80d76b39b79d47b1a7b1c756a04b96c /sal | |
parent | 5099e959ae62286f90556618ede7eecb6398ba24 (diff) |
#i112656# osl_setEnvironment/osl_clearEnvironment, rtl_stringbuffer_newFromStringBuffer needs inited argument
Diffstat (limited to 'sal')
-rw-r--r-- | sal/osl/unx/process_impl.cxx | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sal/osl/unx/process_impl.cxx b/sal/osl/unx/process_impl.cxx index 920122cbbfc5..66c0d0f5c701 100644 --- a/sal/osl/unx/process_impl.cxx +++ b/sal/osl/unx/process_impl.cxx @@ -350,7 +350,7 @@ oslProcessError SAL_CALL osl_setEnvironment(rtl_uString* pustrEnvVar, rtl_uStrin if (pstr_env_var != 0 && pstr_val != 0) { #if defined (SOLARIS) - rtl_String * pBuffer; + rtl_String * pBuffer = NULL; sal_Int32 nCapacity = rtl_stringbuffer_newFromStringBuffer( &pBuffer, rtl_string_getLength(pstr_env_var) + rtl_string_getLength(pstr_val) + 1, @@ -359,10 +359,12 @@ oslProcessError SAL_CALL osl_setEnvironment(rtl_uString* pustrEnvVar, rtl_uStrin rtl_stringbuffer_insert( &pBuffer, &nCapacity, pBuffer->length, rtl_string_getStr(pstr_val), rtl_string_getLength(pstr_val) ); - rtl_string_acquire(pBuffer); // argument to putenv must leak + rtl_string_acquire(pBuffer); // argument to putenv must leak on success if (putenv(rtl_string_getStr(pBuffer)) == 0) result = osl_Process_E_None; + else + rtl_string_release(pBuffer); #else if (setenv(rtl_string_getStr(pstr_env_var), rtl_string_getStr(pstr_val), 1) == 0) result = osl_Process_E_None; @@ -397,16 +399,18 @@ oslProcessError SAL_CALL osl_clearEnvironment(rtl_uString* pustrEnvVar) if (pstr_env_var) { #if defined (SOLARIS) - rtl_String * pBuffer; + rtl_String * pBuffer = NULL; sal_Int32 nCapacity = rtl_stringbuffer_newFromStringBuffer( &pBuffer, rtl_string_getLength(pstr_env_var) + 1, pstr_env_var ); rtl_stringbuffer_insert( &pBuffer, &nCapacity, pBuffer->length, "=", 1); - rtl_string_acquire(pBuffer); // argument to putenv must leak + rtl_string_acquire(pBuffer); // argument to putenv must leak on success if (putenv(rtl_string_getStr(pBuffer)) == 0) result = osl_Process_E_None; + else + rtl_string_release(pBuffer); #elif (defined(MACOSX) || defined(NETBSD) || defined(FREEBSD)) //MacOSX baseline is 10.4, which has an old-school void return //for unsetenv. |