diff options
author | KUDr <KUDr@openttd.org> | 2007-07-04 00:12:02 +0000 |
---|---|---|
committer | KUDr <KUDr@openttd.org> | 2007-07-04 00:12:02 +0000 |
commit | 2d31aef2367463dbb0156d516be6e2f094d1081b (patch) | |
tree | 1882a51a9fa2a5d869b8cabafbe83513a4cd16f9 /src/yapf | |
parent | effb1734574687921db7004e6a03f302edbb0f8f (diff) | |
download | openttd-2d31aef2367463dbb0156d516be6e2f094d1081b.tar.xz |
(svn r10423) -Fix [YAPF, r10301]: INVALID_TRACKDIR causing buffer overrun leading to desync in MP game (many thanks Rubidium)
Diffstat (limited to 'src/yapf')
-rw-r--r-- | src/yapf/yapf_costrail.hpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/yapf/yapf_costrail.hpp b/src/yapf/yapf_costrail.hpp index 4fe1eb74f..477484994 100644 --- a/src/yapf/yapf_costrail.hpp +++ b/src/yapf/yapf_costrail.hpp @@ -90,6 +90,8 @@ public: FORCEINLINE int CurveCost(Trackdir td1, Trackdir td2) { + assert(IsValidTrackdir(td1)); + assert(IsValidTrackdir(td2)); int cost = 0; if (TrackFollower::Allow90degTurns() && ((TrackdirToTrackdirBits(td2) & (TrackdirBits)TrackdirCrossesTrackdirs(td1)) != 0)) { @@ -265,7 +267,7 @@ public: TILE cur(n.m_key.m_tile, n.m_key.m_td); // the previous tile will be needed for transition cost calculations - TILE prev = has_parent ? TILE() : TILE(n.m_parent->GetLastTile(), n.m_parent->GetLastTrackdir()); + TILE prev = !has_parent ? TILE() : TILE(n.m_parent->GetLastTile(), n.m_parent->GetLastTrackdir()); EndSegmentReasonBits end_segment_reason = ESRB_NONE; |