vcl/qa/cppunit/graphicfilter/data/wmf/fail/ofz5942-1.wmf |binary
 vcl/source/gdi/sallayout.cxx                             |    6 ++++++
 2 files changed, 6 insertions(+)

New commits:
commit b189726c4f61a5d28a3b87112e7a85174b5573aa
Author: Caolán McNamara <caol...@redhat.com>
Date:   Mon Feb 5 09:02:39 2018 +0000

    ofz#5942 Out of memory
    
    when missing a glyph in a grapheme we set the whole grapheme as missing.  
There
    can be a huge long grapheme and iterating through each missing codepoint
    results in the whole range pushed back repeatedly as missing.
    
    Change-Id: Ib7c283389ee2357eb3b4264c78e558955ebad1eb
    Reviewed-on: https://gerrit.libreoffice.org/49223
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/qa/cppunit/graphicfilter/data/wmf/fail/ofz5942-1.wmf 
b/vcl/qa/cppunit/graphicfilter/data/wmf/fail/ofz5942-1.wmf
new file mode 100644
index 000000000000..f9a72867c593
Binary files /dev/null and 
b/vcl/qa/cppunit/graphicfilter/data/wmf/fail/ofz5942-1.wmf differ
diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index 07b65564d6c2..a282a0248621 100644
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -270,6 +270,12 @@ void ImplLayoutRuns::AddRun( int nCharPos0, int nCharPos1, 
bool bRTL )
         nCharPos1 = nTemp;
     }
 
+    if (maRuns.size() >= 2 && nCharPos0 == maRuns[maRuns.size() - 2] && 
nCharPos1 == maRuns[maRuns.size() - 1])
+    {
+        //this run is the same as the last
+        return;
+    }
+
     // append new run
     maRuns.push_back( nCharPos0 );
     maRuns.push_back( nCharPos1 );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to