sc/source/filter/excel/xicontent.cxx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
New commits: commit dfab1b24bdf4e83ecf6ff701afa45d561fa12557 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Sat Jul 16 17:04:32 2022 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Sat Jul 16 20:18:42 2022 +0200 ofz#48693 Timeout Change-Id: I6912a41afc8325052d197990f1dd193399a7b053 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137126 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sc/source/filter/excel/xicontent.cxx b/sc/source/filter/excel/xicontent.cxx index ac7141280a1f..4104447f606b 100644 --- a/sc/source/filter/excel/xicontent.cxx +++ b/sc/source/filter/excel/xicontent.cxx @@ -932,6 +932,9 @@ void XclImpValidationManager::ReadDV( XclImpStream& rStrm ) void XclImpValidationManager::Apply() { + const bool bFuzzing = utl::ConfigManager::IsFuzzing(); + size_t nPatterns = 0; + ScDocument& rDoc = GetRoot().GetDoc(); for (const auto& rxDVItem : maDVItems) { @@ -942,11 +945,16 @@ void XclImpValidationManager::Apply() aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_VALIDDATA, nHandle ) ); // apply all ranges - for ( size_t i = 0, nRanges = rItem.maRanges.size(); i < nRanges; ++i ) + for ( size_t i = 0, nRanges = rItem.maRanges.size(); i < nRanges; ++i, ++nPatterns ) { const ScRange & rScRange = rItem.maRanges[ i ]; rDoc.ApplyPatternAreaTab( rScRange.aStart.Col(), rScRange.aStart.Row(), rScRange.aEnd.Col(), rScRange.aEnd.Row(), rScRange.aStart.Tab(), aPattern ); + if (bFuzzing && nPatterns >= 128) + { + SAL_WARN("sc.filter", "for fuzzing performance, abandoned pattern after " << nPatterns << " insertions"); + break; + } } } maDVItems.clear();