[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - vcl/generic

Caolán McNamara caolanm at redhat.com
Fri Nov 28 08:03:10 PST 2014


 vcl/generic/glyphs/gcach_layout.cxx |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

New commits:
commit 93fa8f69ea8759ec876f3683e93f47524899c00b
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Nov 28 15:52:06 2014 +0000

    Related: deb#766788 alloc on heap instead of stack
    
    Change-Id: I0f103f535b99f185cfdd019a76709d5deaef1d13
    (cherry picked from commit acdf54c4142b7a51b99eacacee470ac31d6ff0ae)

diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx
index abd04ba..0285b27 100644
--- a/vcl/generic/glyphs/gcach_layout.cxx
+++ b/vcl/generic/glyphs/gcach_layout.cxx
@@ -372,7 +372,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
 
     rLayout.Reserve(nGlyphCapacity);
 
-    vcl::ScriptRun aScriptRun(reinterpret_cast<const UChar *>(rArgs.mpStr), rArgs.mnLength);
+    std::unique_ptr<vcl::ScriptRun> xScriptRun(new vcl::ScriptRun(reinterpret_cast<const UChar *>(rArgs.mpStr), rArgs.mnLength));
 
     Point aCurrPos(0, 0);
     while (true)
@@ -385,21 +385,21 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
         // Find script subruns.
         int nCurrentPos = nBidiMinRunPos;
         HbScriptRuns aScriptSubRuns;
-        while (aScriptRun.next())
+        while (xScriptRun->next())
         {
-            if (aScriptRun.getScriptStart() <= nCurrentPos && aScriptRun.getScriptEnd() > nCurrentPos)
+            if (xScriptRun->getScriptStart() <= nCurrentPos && xScriptRun->getScriptEnd() > nCurrentPos)
                 break;
         }
 
         while (nCurrentPos < nBidiEndRunPos)
         {
             int32_t nMinRunPos = nCurrentPos;
-            int32_t nEndRunPos = std::min(aScriptRun.getScriptEnd(), nBidiEndRunPos);
-            HbScriptRun aRun(nMinRunPos, nEndRunPos, aScriptRun.getScriptCode());
+            int32_t nEndRunPos = std::min(xScriptRun->getScriptEnd(), nBidiEndRunPos);
+            HbScriptRun aRun(nMinRunPos, nEndRunPos, xScriptRun->getScriptCode());
             aScriptSubRuns.push_back(aRun);
 
             nCurrentPos = nEndRunPos;
-            aScriptRun.next();
+            xScriptRun->next();
         }
 
         // RTL subruns should be reversed to ensure that final glyph order is
@@ -407,7 +407,8 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
         if (bRightToLeft)
             std::reverse(aScriptSubRuns.begin(), aScriptSubRuns.end());
 
-        aScriptRun.reset();
+        xScriptRun->reset();
+        xScriptRun.reset();
 
         for (HbScriptRuns::iterator it = aScriptSubRuns.begin(); it != aScriptSubRuns.end(); ++it)
         {


More information about the Libreoffice-commits mailing list