diff options
Diffstat (limited to 'chart2/source/view/axes/Tickmarks_Equidistant.cxx')
-rw-r--r-- | chart2/source/view/axes/Tickmarks_Equidistant.cxx | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/chart2/source/view/axes/Tickmarks_Equidistant.cxx b/chart2/source/view/axes/Tickmarks_Equidistant.cxx index 0273c9a678be..aa5376161853 100644 --- a/chart2/source/view/axes/Tickmarks_Equidistant.cxx +++ b/chart2/source/view/axes/Tickmarks_Equidistant.cxx @@ -31,6 +31,8 @@ #include "ViewDefines.hxx" #include <rtl/math.hxx> #include <tools/debug.hxx> + +#include <limits> #include <memory> //............................................................................. @@ -214,7 +216,12 @@ sal_Int32 EquidistantTickFactory::getMaxTickCount( sal_Int32 nDepth ) const if (!isFinite(fSub)) return 0; - sal_Int32 nIntervalCount = static_cast<sal_Int32>( fSub / m_rIncrement.Distance ); + double fIntervalCount = fSub / m_rIncrement.Distance; + if (fIntervalCount > std::numeric_limits<sal_Int32>::max()) + // Interval count too high! Bail out. + return 0; + + sal_Int32 nIntervalCount = static_cast<sal_Int32>(fIntervalCount); nIntervalCount+=3; for(sal_Int32 nN=0; nN<nDepth-1; nN++) |