sw/source/core/inc/scriptinfo.hxx |    4 ++--
 sw/source/core/text/itradj.cxx    |   13 +++++++------
 sw/source/core/text/porlay.cxx    |    4 ++--
 3 files changed, 11 insertions(+), 10 deletions(-)

New commits:
commit dea1fae8502d2614f57ed94a967db1cb36eb4a5e
Author: Caolán McNamara <caol...@redhat.com>
Date:   Tue Jun 26 12:45:19 2018 +0100

    forcepoint#49 survive more kashidas than expected
    
    Change-Id: I66aa5389b3d80d1fe2f6898e8920eb37ca064381
    
    contains...
    
    can use simple vector here
    
    Change-Id: Ia1565a946f9ac6d607fb6802b19e561fc9afc66d
    
    and...
    
    pass vector as arg, rather than raw pointer
    
    Change-Id: Id97df4cce7a2ce28f1a5e7cc30e27cf4ce9261d1
    Reviewed-on: https://gerrit.libreoffice.org/56476
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sw/source/core/inc/scriptinfo.hxx 
b/sw/source/core/inc/scriptinfo.hxx
index 9386f1309e8e..e3d64b1627f3 100644
--- a/sw/source/core/inc/scriptinfo.hxx
+++ b/sw/source/core/inc/scriptinfo.hxx
@@ -306,11 +306,11 @@ public:
 
 /** retrieves kashida opportunities for a given text range.
 
-   pKashidaPositions: buffer to receive the char indices of the
+   rKashidaPositions: buffer to receive the char indices of the
                       kashida opportunities relative to the paragraph
 */
     void GetKashidaPositions(TextFrameIndex nStt, TextFrameIndex nLen,
-        TextFrameIndex* pKashidaPosition);
+                             std::vector<TextFrameIndex>& rKashidaPosition);
 
 /** Use regular blank justification instead of kashdida justification for the 
given line of text.
    nStt Start char index of the line referring to the paragraph.
diff --git a/sw/source/core/text/itradj.cxx b/sw/source/core/text/itradj.cxx
index 76e115318422..8383292105bc 100644
--- a/sw/source/core/text/itradj.cxx
+++ b/sw/source/core/text/itradj.cxx
@@ -132,9 +132,10 @@ static bool lcl_CheckKashidaPositions( SwScriptInfo& rSI, 
SwTextSizeInfo& rInf,
 
     // kashida positions found in SwScriptInfo are not necessarily valid in 
every font
     // if two characters are replaced by a ligature glyph, there will be no 
place for a kashida
-    std::unique_ptr<TextFrameIndex[]> pKashidaPos(new 
TextFrameIndex[rKashidas]);
-    std::unique_ptr<TextFrameIndex[]> pKashidaPosDropped(new 
TextFrameIndex[rKashidas]);
-    rSI.GetKashidaPositions ( nIdx, rItr.GetLength(), pKashidaPos.get() );
+    std::vector<TextFrameIndex> aKashidaPos;
+    rSI.GetKashidaPositions(nIdx, rItr.GetLength(), aKashidaPos);
+    assert(aKashidaPos.size() >= static_cast<size_t>(rKashidas));
+    std::vector<TextFrameIndex> aKashidaPosDropped(aKashidaPos.size());
     sal_Int32 nKashidaIdx = 0;
     while ( rKashidas && nIdx < nEnd )
     {
@@ -165,12 +166,12 @@ static bool lcl_CheckKashidaPositions( SwScriptInfo& rSI, 
SwTextSizeInfo& rInf,
                 nKashidasDropped = rInf.GetOut()->ValidateKashidas(
                     rInf.GetText(), sal_Int32(nIdx), sal_Int32(nNext - nIdx),
                     nKashidasInAttr,
-                    reinterpret_cast<sal_Int32*>(pKashidaPos.get() + 
nKashidaIdx),
-                    reinterpret_cast<sal_Int32*>(pKashidaPosDropped.get()));
+                    reinterpret_cast<sal_Int32*>(aKashidaPos.data() + 
nKashidaIdx),
+                    reinterpret_cast<sal_Int32*>(aKashidaPosDropped.data()));
                 rInf.GetOut()->SetLayoutMode ( nOldLayout );
                 if ( nKashidasDropped )
                 {
-                    rSI.MarkKashidasInvalid(nKashidasDropped, 
pKashidaPosDropped.get());
+                    rSI.MarkKashidasInvalid(nKashidasDropped, 
aKashidaPosDropped.data());
                     rKashidas -= nKashidasDropped;
                     nGluePortion -= TextFrameIndex(nKashidasDropped);
                 }
diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
index 06baf68a148c..11e78a915433 100644
--- a/sw/source/core/text/porlay.cxx
+++ b/sw/source/core/text/porlay.cxx
@@ -1977,7 +1977,7 @@ void SwScriptInfo::MarkKashidaInvalid(size_t const 
nKashPos)
 // retrieve the kashida positions in the given text range
 void SwScriptInfo::GetKashidaPositions(
     TextFrameIndex const nStt, TextFrameIndex const nLen,
-    TextFrameIndex *const pKashidaPosition)
+    std::vector<TextFrameIndex>& rKashidaPosition)
 {
     size_t nCntKash = 0;
     while( nCntKash < CountKashida() )
@@ -1994,7 +1994,7 @@ void SwScriptInfo::GetKashidaPositions(
     {
         if ( nEnd <= GetKashida( nCntKashEnd ) )
             break;
-        pKashidaPosition [ nCntKashEnd - nCntKash ] = GetKashida ( nCntKashEnd 
);
+        rKashidaPosition.push_back(GetKashida(nCntKashEnd));
         nCntKashEnd++;
     }
 }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to