mirror of https://github.com/OpenTTD/OpenTTD
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 appropriatepull/11144/head
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) &&
|
||||||
|
|
Loading…
Reference in New Issue