From 9e8a644fcc44aced6e0c4d9b25689f3136a17fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Tue, 1 Aug 2017 07:34:23 +0200 Subject: [PATCH] Fix #5931: Money overflow when placing track design --- src/openrct2/ride/track_design.c | 4 ++-- src/openrct2/windows/track_place.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/openrct2/ride/track_design.c b/src/openrct2/ride/track_design.c index 245a63bba6..f6f1493713 100644 --- a/src/openrct2/ride/track_design.c +++ b/src/openrct2/ride/track_design.c @@ -895,7 +895,7 @@ static sint32 track_design_place_scenery(rct_td6_scenery_element *scenery_start, continue; break; } - _trackDesignPlaceCost += cost; + add_clamp_money32(_trackDesignPlaceCost, cost); if (_trackDesignPlaceOperation != PTD_OPERATION_2) { if (cost == MONEY32_UNDEFINED){ _trackDesignPlaceCost = MONEY32_UNDEFINED; @@ -1131,7 +1131,7 @@ static bool track_design_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint sint16 tempZ = z - trackCoordinates->z_begin; uint32 edi = ((track->flags & 0x0F) << 17) | - ((track->flags & 0x0F) << 28) | + ((uint32)(track->flags & 0x0F) << 28) | (((track->flags >> 4) & 0x03) << 24) | (tempZ & 0xFFFF); diff --git a/src/openrct2/windows/track_place.c b/src/openrct2/windows/track_place.c index a8bfdd3b53..30a4ccc0f8 100644 --- a/src/openrct2/windows/track_place.c +++ b/src/openrct2/windows/track_place.c @@ -488,8 +488,8 @@ static void window_track_place_draw_mini_preview(rct_track_td6 *td6) for (sint32 pass = 0; pass < 2; pass++) { rct_xy16 origin = { 0, 0 }; if (pass == 1) { - origin.x -= ((max.x + min.x) >> 6) << 5; - origin.y -= ((max.y + min.y) >> 6) << 5; + origin.x -= ((max.x + min.x) >> 6) * 32; + origin.y -= ((max.y + min.y) >> 6) * 32; } if (td6->type == RIDE_TYPE_MAZE) {