summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorCaol?n McNamara <cmc@openoffice.org>2010-07-08 20:53:56 +0100
committerCaol?n McNamara <cmc@openoffice.org>2010-07-08 20:53:56 +0100
commite587dbf204b39022391e09eeeb2d25182a0e60b5 (patch)
treed2c440d5b80d76b39b79d47b1a7b1c756a04b96c /sal
parent5099e959ae62286f90556618ede7eecb6398ba24 (diff)
#i112656# osl_setEnvironment/osl_clearEnvironment, rtl_stringbuffer_newFromStringBuffer needs inited argument
Diffstat (limited to 'sal')
-rw-r--r--sal/osl/unx/process_impl.cxx12
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.