diff options
author | Matthias Huetsch [mhu] <matthias.huetsch@oracle.com> | 2010-11-25 14:25:45 +0100 |
---|---|---|
committer | Matthias Huetsch [mhu] <matthias.huetsch@oracle.com> | 2010-11-25 14:25:45 +0100 |
commit | d48bd5250b96257cd9488cb398f48e69949e3013 (patch) | |
tree | afc754372c979a425427b0731eb322d2c1d93fa7 /rsc | |
parent | Update from cloned repository. (diff) | |
download | core-d48bd5250b96257cd9488cb398f48e69949e3013.tar.gz core-d48bd5250b96257cd9488cb398f48e69949e3013.zip |
#i115784# rsc: fix memory errors uncovered by valgrind and other tools.
Diffstat (limited to 'rsc')
-rw-r--r-- | rsc/source/tools/rscchar.cxx | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/rsc/source/tools/rscchar.cxx b/rsc/source/tools/rscchar.cxx index c23022e4222e..2e43844b9f08 100644 --- a/rsc/source/tools/rscchar.cxx +++ b/rsc/source/tools/rscchar.cxx @@ -55,13 +55,13 @@ *************************************************************************/ char * RscChar::MakeUTF8( char * pStr, UINT16 nTextEncoding ) { - sal_Size nMaxUniCodeBuf = strlen( pStr ) + 1; - char * pOrgStr = new char[ nMaxUniCodeBuf ]; - sal_uInt32 nOrgLen = 0; - + sal_Size nMaxUniCodeBuf = strlen( pStr ) + 1; if( nMaxUniCodeBuf * 6 > 0x0FFFFF ) RscExit( 10 ); + char * pOrgStr = new char[ nMaxUniCodeBuf ]; + sal_uInt32 nOrgLen = 0; + char cOld = '1'; while( cOld != 0 ) { @@ -119,9 +119,8 @@ char * RscChar::MakeUTF8( char * pStr, UINT16 nTextEncoding ) } if( nChar > 255 ) { - rtl_freeMemory( pOrgStr ); - // Wert zu gross, oder kein 3 Ziffern + delete [] pOrgStr; return( NULL ); } c = (char)nChar; @@ -174,6 +173,7 @@ char * RscChar::MakeUTF8( char * pStr, UINT16 nTextEncoding ) &nSrcCvtBytes ); rtl_destroyTextToUnicodeConverter( hConv ); + delete[] pOrgStr, pOrgStr = 0; hConv = rtl_createUnicodeToTextConverter( RTL_TEXTENCODING_UTF8 ); // factor fo 6 is the maximum size of an UNICODE character as utf8 @@ -188,9 +188,7 @@ char * RscChar::MakeUTF8( char * pStr, UINT16 nTextEncoding ) &nSrcCvtBytes ); rtl_destroyTextToUnicodeConverter( hConv ); - - delete[] pUniCode; - delete[] pOrgStr; + delete[] pUniCode, pUniCode = 0; return pUtf8; }; |