From ab5be44ccb068ed086a612300c6d7b5d63d2a6a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= Date: Wed, 4 Dec 2019 11:22:07 +0100 Subject: [PATCH] Fix #10325: Crash when banners have no text (#10327) * Fix #10325: Crash when banners have no text * Update changelog.txt --- distribution/changelog.txt | 1 + src/openrct2/paint/tile_element/Paint.Entrance.cpp | 8 ++++---- src/openrct2/paint/tile_element/Paint.LargeScenery.cpp | 4 ++-- src/openrct2/paint/tile_element/Paint.Path.cpp | 4 ++-- src/openrct2/paint/tile_element/Paint.Wall.cpp | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 3a5d41dc3b..31d33ef7e8 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -2,6 +2,7 @@ ------------------------------------------------------------------------ - Change: [#1164] Use available translations for shortcut key bindings. - Fix: [#10228] Can't import RCT1 Deluxe from Steam. +- Fix: [#10325] Crash when banners have no text. 0.2.4 (2019-10-28) ------------------------------------------------------------------------ diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index 6173b05ec4..1a215f7949 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -189,8 +189,8 @@ static void ride_entrance_exit_paint(paint_session* session, uint8_t direction, gCurrentFontSpriteBase = FONT_SPRITE_BASE_TINY; - uint16_t string_width = gfx_get_string_width(entrance_string); - uint16_t scroll = (gCurrentTicks / 2) % string_width; + uint16_t stringWidth = gfx_get_string_width(entrance_string); + uint16_t scroll = stringWidth > 0 ? (gCurrentTicks / 2) % stringWidth : 0; sub_98199C( session, scrolling_text_setup(session, STR_BANNER_TEXT_FORMAT, scroll, stationObj->ScrollingMode, COLOUR_BLACK), 0, @@ -298,8 +298,8 @@ static void park_entrance_paint(paint_session* session, uint8_t direction, int32 gCurrentFontSpriteBase = FONT_SPRITE_BASE_TINY; - uint16_t string_width = gfx_get_string_width(park_name); - uint16_t scroll = (gCurrentTicks / 2) % string_width; + uint16_t stringWidth = gfx_get_string_width(park_name); + uint16_t scroll = stringWidth > 0 ? (gCurrentTicks / 2) % stringWidth : 0; if (entrance->scrolling_mode == SCROLLING_MODE_NONE) break; diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index 75489de1eb..adca1ae7c5 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -440,8 +440,8 @@ void large_scenery_paint(paint_session* session, uint8_t direction, uint16_t hei gCurrentFontSpriteBase = FONT_SPRITE_BASE_TINY; - uint16_t string_width = gfx_get_string_width(signString); - uint16_t scroll = (gCurrentTicks / 2) % string_width; + uint16_t stringWidth = gfx_get_string_width(signString); + uint16_t scroll = stringWidth > 0 ? (gCurrentTicks / 2) % stringWidth : 0; sub_98199C( session, scrolling_text_setup(session, STR_SCROLLING_SIGN_TEXT, scroll, scrollMode, textColour), 0, 0, 1, 1, 21, height + 25, boxoffset.x, boxoffset.y, boxoffset.z); diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 6c0a7551b4..d39a1f7a3e 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -472,8 +472,8 @@ static void sub_6A4101( gCurrentFontSpriteBase = FONT_SPRITE_BASE_TINY; - uint16_t string_width = gfx_get_string_width(gCommonStringFormatBuffer); - uint16_t scroll = (gCurrentTicks / 2) % string_width; + uint16_t stringWidth = gfx_get_string_width(gCommonStringFormatBuffer); + uint16_t scroll = stringWidth > 0 ? (gCurrentTicks / 2) % stringWidth : 0; sub_98199C( session, scrolling_text_setup(session, STR_BANNER_TEXT_FORMAT, scroll, scrollingMode, COLOUR_BLACK), 0, 0, 1, 1, diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index 15fe860495..1a84a6f388 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -442,8 +442,8 @@ void fence_paint(paint_session* session, uint8_t direction, int32_t height, cons gCurrentFontSpriteBase = FONT_SPRITE_BASE_TINY; - uint16_t string_width = gfx_get_string_width(signString); - uint16_t scroll = (gCurrentTicks / 2) % string_width; + uint16_t stringWidth = gfx_get_string_width(signString); + uint16_t scroll = stringWidth > 0 ? (gCurrentTicks / 2) % stringWidth : 0; sub_98199C( session, scrolling_text_setup(session, STR_SCROLLING_SIGN_TEXT, scroll, scrollingMode, secondaryColour), 0, 0, 1, 1,