From 6a3735a47de8a9851e7795cf023d95d81867260d Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Tue, 21 Apr 2009 13:38:30 +0200 Subject: BT: Fix lock-up & crash in the Elastic Nodes example Ensure that we don't divide by 0 when two nodes are exactly on top of each other. Reviewed-by: Alexis Reviewed-by: Joao --- examples/graphicsview/elasticnodes/edge.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/examples/graphicsview/elasticnodes/edge.cpp b/examples/graphicsview/elasticnodes/edge.cpp index 4018c25..e32a35a 100644 --- a/examples/graphicsview/elasticnodes/edge.cpp +++ b/examples/graphicsview/elasticnodes/edge.cpp @@ -93,11 +93,16 @@ void Edge::adjust() QLineF line(mapFromItem(source, 0, 0), mapFromItem(dest, 0, 0)); qreal length = line.length(); - QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length); prepareGeometryChange(); - sourcePoint = line.p1() + edgeOffset; - destPoint = line.p2() - edgeOffset; + + if (!qFuzzyCompare(length, qreal(0.0))) { + QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length); + sourcePoint = line.p1() + edgeOffset; + destPoint = line.p2() - edgeOffset; + } else { + sourcePoint = destPoint = line.p1(); + } } QRectF Edge::boundingRect() const -- cgit v0.12