Fix: Integer overflow in LinkGraphOverlay::ShowTooltip for long links
In particular when fully zoomed in This could result in tooltips not being shown at all, or being shown when not appropriate
This commit is contained in:

committed by
rubidium42

parent
756c469b8f
commit
864d2352c2
@@ -369,8 +369,8 @@ bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond)
|
|||||||
|
|
||||||
/* Check the distance from the cursor to the line defined by the two stations. */
|
/* Check the distance from the cursor to the line defined by the two stations. */
|
||||||
Point ptb = this->GetStationMiddle(Station::Get(j->first));
|
Point ptb = this->GetStationMiddle(Station::Get(j->first));
|
||||||
float dist = std::abs((ptb.x - pta.x) * (pta.y - pt.y) - (pta.x - pt.x) * (ptb.y - pta.y)) /
|
float dist = std::abs((int64)(ptb.x - pta.x) * (int64)(pta.y - pt.y) - (int64)(pta.x - pt.x) * (int64)(ptb.y - pta.y)) /
|
||||||
std::sqrt((ptb.x - pta.x) * (ptb.x - pta.x) + (ptb.y - pta.y) * (ptb.y - pta.y));
|
std::sqrt((int64)(ptb.x - pta.x) * (int64)(ptb.x - pta.x) + (int64)(ptb.y - pta.y) * (int64)(ptb.y - pta.y));
|
||||||
const auto &link = j->second;
|
const auto &link = j->second;
|
||||||
if (dist <= 4 && link.Usage() > 0 &&
|
if (dist <= 4 && link.Usage() > 0 &&
|
||||||
pt.x + 2 >= std::min(pta.x, ptb.x) &&
|
pt.x + 2 >= std::min(pta.x, ptb.x) &&
|
||||||
|
Reference in New Issue
Block a user