diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-07-15 21:42:04 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-07-16 13:32:15 +0200 |
commit | eca99b2dec0219893eaefa231b789cf6bab838ac (patch) | |
tree | 9b1baed118ca228ce38c4ede0592eee2c0250bd7 | |
parent | 06579261deb53bd519bbad7c41a3ddbaeb190c81 (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>
-rw-r--r-- | chart2/source/view/charttypes/VSeriesPlotter.cxx | 67 |
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() |