summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoni Poikelin <joni.poikelin@qt.io>2018-02-27 15:02:41 +0200
committerJoni Poikelin <joni.poikelin@qt.io>2018-02-28 09:09:27 +0000
commit2dce9ca9da15add01d7e81b8a98223a36262d829 (patch)
tree71c41334d2fdc480f065e53f24010cfaa6ea6a02 /src
parent1f78a69f4f6c33393a0b43a9151c698aa3d05bbb (diff)
Fix few cases of dividing by zero
Task-number: QTBUG-66712 Change-Id: Ib2b1bb90b9119aff093f678eadd1a6aafcce3543 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/charts/domain/xydomain.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/charts/domain/xydomain.cpp b/src/charts/domain/xydomain.cpp
index 1e79de52..a4458f1f 100644
--- a/src/charts/domain/xydomain.cpp
+++ b/src/charts/domain/xydomain.cpp
@@ -154,8 +154,12 @@ void XYDomain::move(qreal dx, qreal dy)
QPointF XYDomain::calculateGeometryPoint(const QPointF &point, bool &ok) const
{
- const qreal deltaX = m_size.width() / (m_maxX - m_minX);
- const qreal deltaY = m_size.height() / (m_maxY - m_minY);
+ const qreal xd = m_maxX - m_minX;
+ const qreal yd = m_maxY - m_minY;
+ if (qFuzzyIsNull(xd) || qFuzzyIsNull(yd))
+ return QPointF();
+ const qreal deltaX = m_size.width() / xd;
+ const qreal deltaY = m_size.height() / yd;
qreal x = (point.x() - m_minX) * deltaX;
if (m_reverseX)
x = m_size.width() - x;
@@ -168,8 +172,12 @@ QPointF XYDomain::calculateGeometryPoint(const QPointF &point, bool &ok) const
QVector<QPointF> XYDomain::calculateGeometryPoints(const QVector<QPointF> &vector) const
{
- const qreal deltaX = m_size.width() / (m_maxX - m_minX);
- const qreal deltaY = m_size.height() / (m_maxY - m_minY);
+ const qreal xd = m_maxX - m_minX;
+ const qreal yd = m_maxY - m_minY;
+ if (qFuzzyIsNull(xd) || qFuzzyIsNull(yd))
+ return QVector<QPointF>();
+ const qreal deltaX = m_size.width() / xd;
+ const qreal deltaY = m_size.height() / yd;
QVector<QPointF> result;
result.resize(vector.count());
@@ -189,8 +197,12 @@ QVector<QPointF> XYDomain::calculateGeometryPoints(const QVector<QPointF> &vecto
QPointF XYDomain::calculateDomainPoint(const QPointF &point) const
{
- const qreal deltaX = m_size.width() / (m_maxX - m_minX);
- const qreal deltaY = m_size.height() / (m_maxY - m_minY);
+ const qreal xd = m_maxX - m_minX;
+ const qreal yd = m_maxY - m_minY;
+ if (qFuzzyIsNull(xd) || qFuzzyIsNull(yd))
+ return QPointF();
+ const qreal deltaX = m_size.width() / xd;
+ const qreal deltaY = m_size.height() / yd;
qreal x = m_reverseX ? (m_size.width() - point.x()) : point.x();
x /= deltaX;
x += m_minX;