diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2020-02-20 14:17:19 +0100 |
---|---|---|
committer | Michael Stahl <michael.stahl@cib.de> | 2020-02-20 15:45:07 +0100 |
commit | a9f2f4b4c9e1fa4e4c4a69517c31d0b8e2063f01 (patch) | |
tree | 12c0bf3728f8e8c2a6b5682e21002d30efc9ab0f /sw/source/core/layout/laycache.cxx | |
parent | bae73c0726e7fdf7f427a8254c9d6d4b4c510daf (diff) |
tdf#129529 sw_redlinehide: infinite loop in SwLayHelper::CheckInsert()
The bugdoc has this in meta.xml:
meta:page-count="819" meta:paragraph-count="302"
... for which SwLayHelper::CalcPageCount() cunningly estimates a maximum
of 0 paragraphs per page, and at that rate an infinite number of pages
are required...
Not sure what a reasonable minimum should be, paragraphs could be 16
pages long even with 64k limit, but it does appear unlikely.
(regression from 7e8b4756d95057f069467b34e7849f9354856578 which disabled
the use of the layout-cache in the bugdoc)
Change-Id: Icd9ab145cc2f0714b50de9b5b4a1ef10ac1d49a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89106
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
Diffstat (limited to 'sw/source/core/layout/laycache.cxx')
-rw-r--r-- | sw/source/core/layout/laycache.cxx | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sw/source/core/layout/laycache.cxx b/sw/source/core/layout/laycache.cxx index 8cee8dd31fc2..94c2ff2ae12a 100644 --- a/sw/source/core/layout/laycache.cxx +++ b/sw/source/core/layout/laycache.cxx @@ -601,7 +601,9 @@ sal_uLong SwLayHelper::CalcPageCount() if ( nNdCount > 100 ) // no estimation below this value { if ( nPgCount > 0 ) - mnMaxParaPerPage = nNdCount / nPgCount; + { // tdf#129529 avoid 0... + mnMaxParaPerPage = std::max<sal_uLong>(3, nNdCount / nPgCount); + } else { mnMaxParaPerPage = std::max( sal_uLong(20), |