sc/source/core/tool/interpr1.cxx |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

New commits:
commit 3ccc4c123f5e78e0204d11abeab2d1a74278ca3e
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Thu Mar 10 10:53:12 2022 +0300
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Thu Mar 10 22:03:06 2022 +0100

    Use OUStringBuffer in ScConcat
    
    Change-Id: Ic1ee6e1a1d13afd7d205cdfb9f76f5e29a176378
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131298
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index db8b282500ba..d79962324754 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -9752,16 +9752,20 @@ void ScInterpreter::ScRept()
 void ScInterpreter::ScConcat()
 {
     sal_uInt8 nParamCount = GetByte();
-    OUString aRes;
+
+    //reverse order of parameter stack to simplify processing
+    ReverseStack(nParamCount);
+
+    OUStringBuffer aRes;
     while( nParamCount-- > 0)
     {
         OUString aStr = GetString().getString();
         if (CheckStringResultLen(aRes, aStr.getLength()))
-            aRes = aStr + aRes;
+            aRes.append(aStr);
         else
             break;
     }
-    PushString( aRes );
+    PushString( aRes.makeStringAndClear() );
 }
 
 FormulaError ScInterpreter::GetErrorType()

Reply via email to