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