From a90760a056056fdf1fc4dbdb6464f2a84b0fc617 Mon Sep 17 00:00:00 2001 From: Matteo Casalin Date: Sat, 1 Mar 2014 20:20:59 +0100 Subject: Use OUStringBuffer instead of rtl_uString in EditDoc::GetText Change-Id: I292c2b726de3e6c27f05fdf7612fe057ae9f94ad --- editeng/source/editeng/editdoc.cxx | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'editeng') diff --git a/editeng/source/editeng/editdoc.cxx b/editeng/source/editeng/editdoc.cxx index 86a9548911b7..78124b853446 100644 --- a/editeng/source/editeng/editdoc.cxx +++ b/editeng/source/editeng/editdoc.cxx @@ -55,6 +55,8 @@ #include #include +#include + #include #include #include @@ -2082,33 +2084,26 @@ OUString EditDoc::GetSepStr( LineEnd eEnd ) OUString EditDoc::GetText( LineEnd eEnd ) const { - sal_uLong nLen = GetTextLen(); - sal_Int32 nNodes = Count(); + const sal_Int32 nNodes = Count(); if (nNodes == 0) return OUString(); - OUString aSep = EditDoc::GetSepStr( eEnd ); - sal_Int32 nSepSize = aSep.getLength(); + const OUString aSep = EditDoc::GetSepStr( eEnd ); + const sal_Int32 nSepSize = aSep.getLength(); + const sal_uLong nLen = GetTextLen() + (nNodes - 1)*nSepSize; - if ( nSepSize ) - nLen += (nNodes - 1) * nSepSize; + OUStringBuffer aBuffer(nLen + 16); // leave some slack - rtl_uString* newStr = rtl_uString_alloc(nLen); - sal_Unicode* pCur = newStr->buffer; - sal_Int32 nLastNode = nNodes-1; for ( sal_Int32 nNode = 0; nNode < nNodes; nNode++ ) { - OUString aTmp( GetParaAsString( GetObject(nNode) ) ); - memcpy( pCur, aTmp.getStr(), aTmp.getLength() * sizeof(sal_Unicode) ); - pCur += aTmp.getLength(); - if ( nSepSize && ( nNode != nLastNode ) ) + if ( nSepSize && nNode>0 ) { - memcpy( pCur, aSep.getStr(), nSepSize * sizeof(sal_Unicode ) ); - pCur += nSepSize; + aBuffer.append(aSep); } + aBuffer.append(GetParaAsString( GetObject(nNode) )); } - assert(pCur - newStr->buffer == newStr->length); - return OUString(newStr, SAL_NO_ACQUIRE); + + return aBuffer.makeStringAndClear(); } OUString EditDoc::GetParaAsString( sal_Int32 nNode ) const -- cgit