summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-07-15 21:42:04 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-07-16 13:32:15 +0200
commiteca99b2dec0219893eaefa231b789cf6bab838ac (patch)
tree9b1baed118ca228ce38c4ede0592eee2c0250bd7 /chart2
parent06579261deb53bd519bbad7c41a3ddbaeb190c81 (diff)
cid#1448243 Using invalid iterator
return early on error paths Change-Id: I5d4f05585bb8c4b7d3fbe6824b8aa97785098ec5 Reviewed-on: https://gerrit.libreoffice.org/75662 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/view/charttypes/VSeriesPlotter.cxx67
1 files changed, 36 insertions, 31 deletions
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index 835c19a449ad..e95961677d42 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -1605,41 +1605,46 @@ void VSeriesPlotter::setTimeResolutionOnXAxis( long TimeResolution, const Date&
long VSeriesPlotter::calculateTimeResolutionOnXAxis()
{
long nRet = css::chart::TimeUnit::YEAR;
- if( m_pExplicitCategoriesProvider )
- {
- const std::vector< double >& rDateCategories = m_pExplicitCategoriesProvider->getDateCategories();
- Date aNullDate(30,12,1899);
- if (m_apNumberFormatterWrapper)
- aNullDate = m_apNumberFormatterWrapper->getNullDate();
- if( !rDateCategories.empty() )
- {
- std::vector< double >::const_iterator aIt = rDateCategories.begin(), aEnd = rDateCategories.end();
- aIt = std::find_if(aIt, aEnd, [](const double& rDateCategory) { return !rtl::math::isNan(rDateCategory); });
+ if (!m_pExplicitCategoriesProvider)
+ return nRet;
- Date aPrevious(aNullDate); aPrevious.AddDays(rtl::math::approxFloor(*aIt));
- ++aIt;
- for(;aIt!=aEnd;++aIt)
- {
- if (rtl::math::isNan(*aIt))
- continue;
+ const std::vector<double>& rDateCategories = m_pExplicitCategoriesProvider->getDateCategories();
+ if (rDateCategories.empty())
+ return nRet;
- Date aCurrent(aNullDate); aCurrent.AddDays(rtl::math::approxFloor(*aIt));
- if( nRet == css::chart::TimeUnit::YEAR )
- {
- if( DateHelper::IsInSameYear( aPrevious, aCurrent ) )
- nRet = css::chart::TimeUnit::MONTH;
- }
- if( nRet == css::chart::TimeUnit::MONTH )
- {
- if( DateHelper::IsInSameMonth( aPrevious, aCurrent ) )
- nRet = css::chart::TimeUnit::DAY;
- }
- if( nRet == css::chart::TimeUnit::DAY )
- break;
- aPrevious=aCurrent;
- }
+ std::vector<double>::const_iterator aIt = rDateCategories.begin(), aEnd = rDateCategories.end();
+
+ aIt = std::find_if(aIt, aEnd, [](const double& rDateCategory) { return !rtl::math::isNan(rDateCategory); });
+ if (aIt == aEnd)
+ return nRet;
+
+ Date aNullDate(30,12,1899);
+ if (m_apNumberFormatterWrapper)
+ aNullDate = m_apNumberFormatterWrapper->getNullDate();
+
+ Date aPrevious(aNullDate); aPrevious.AddDays(rtl::math::approxFloor(*aIt));
+ ++aIt;
+ for(;aIt!=aEnd;++aIt)
+ {
+ if (rtl::math::isNan(*aIt))
+ continue;
+
+ Date aCurrent(aNullDate); aCurrent.AddDays(rtl::math::approxFloor(*aIt));
+ if( nRet == css::chart::TimeUnit::YEAR )
+ {
+ if( DateHelper::IsInSameYear( aPrevious, aCurrent ) )
+ nRet = css::chart::TimeUnit::MONTH;
+ }
+ if( nRet == css::chart::TimeUnit::MONTH )
+ {
+ if( DateHelper::IsInSameMonth( aPrevious, aCurrent ) )
+ nRet = css::chart::TimeUnit::DAY;
}
+ if( nRet == css::chart::TimeUnit::DAY )
+ break;
+ aPrevious=aCurrent;
}
+
return nRet;
}
double VSeriesPlotter::getMinimumX()