diff options
author | Joni Poikelin <joni.poikelin@qt.io> | 2018-02-27 15:02:41 +0200 |
---|---|---|
committer | Joni Poikelin <joni.poikelin@qt.io> | 2018-02-28 09:09:27 +0000 |
commit | 2dce9ca9da15add01d7e81b8a98223a36262d829 (patch) | |
tree | 71c41334d2fdc480f065e53f24010cfaa6ea6a02 /src | |
parent | 1f78a69f4f6c33393a0b43a9151c698aa3d05bbb (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.cpp | 24 |
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; |