Guard against null banners (#11078)

This commit is contained in:
Michael Steenbeek 2020-03-27 13:04:45 +01:00 committed by GitHub
parent c6e42ac313
commit 47b6139546
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 19 deletions

View File

@ -327,15 +327,17 @@ int32_t viewport_interaction_get_item_right(const ScreenCoordsXY& screenCoords,
if (sceneryEntry->wall.scrolling_mode != SCROLLING_MODE_NONE)
{
auto banner = tileElement->AsWall()->GetBanner();
size_t argPos = 0;
set_map_tooltip_format_arg(argPos, rct_string_id, STR_MAP_TOOLTIP_BANNER_STRINGID_STRINGID);
argPos += sizeof(rct_string_id);
argPos += banner->FormatTextTo(gMapTooltipFormatArgs + argPos);
set_map_tooltip_format_arg(argPos, rct_string_id, STR_MAP_TOOLTIP_STRINGID_CLICK_TO_MODIFY);
argPos += sizeof(rct_string_id);
set_map_tooltip_format_arg(argPos, rct_string_id, sceneryEntry->name);
return info->type;
if (banner != nullptr)
{
size_t argPos = 0;
set_map_tooltip_format_arg(argPos, rct_string_id, STR_MAP_TOOLTIP_BANNER_STRINGID_STRINGID);
argPos += sizeof(rct_string_id);
argPos += banner->FormatTextTo(gMapTooltipFormatArgs + argPos);
set_map_tooltip_format_arg(argPos, rct_string_id, STR_MAP_TOOLTIP_STRINGID_CLICK_TO_MODIFY);
argPos += sizeof(rct_string_id);
set_map_tooltip_format_arg(argPos, rct_string_id, sceneryEntry->name);
return info->type;
}
}
break;
@ -344,15 +346,17 @@ int32_t viewport_interaction_get_item_right(const ScreenCoordsXY& screenCoords,
if (sceneryEntry->large_scenery.scrolling_mode != SCROLLING_MODE_NONE)
{
auto banner = tileElement->AsLargeScenery()->GetBanner();
size_t argPos = 0;
set_map_tooltip_format_arg(argPos, rct_string_id, STR_MAP_TOOLTIP_BANNER_STRINGID_STRINGID);
argPos += sizeof(rct_string_id);
argPos += banner->FormatTextTo(gMapTooltipFormatArgs + argPos);
set_map_tooltip_format_arg(argPos, rct_string_id, STR_MAP_TOOLTIP_STRINGID_CLICK_TO_MODIFY);
argPos += sizeof(rct_string_id);
set_map_tooltip_format_arg(argPos, rct_string_id, sceneryEntry->name);
return info->type;
if (banner != nullptr)
{
size_t argPos = 0;
set_map_tooltip_format_arg(argPos, rct_string_id, STR_MAP_TOOLTIP_BANNER_STRINGID_STRINGID);
argPos += sizeof(rct_string_id);
argPos += banner->FormatTextTo(gMapTooltipFormatArgs + argPos);
set_map_tooltip_format_arg(argPos, rct_string_id, STR_MAP_TOOLTIP_STRINGID_CLICK_TO_MODIFY);
argPos += sizeof(rct_string_id);
set_map_tooltip_format_arg(argPos, rct_string_id, sceneryEntry->name);
return info->type;
}
}
break;

View File

@ -156,8 +156,10 @@ rct_window* window_sign_open(rct_windownumber number)
window_init_scroll_widgets(w);
auto banner = GetBanner(w->number);
auto signViewPos = banner->position.ToCoordsXY().ToTileCentre();
if (banner == nullptr)
return nullptr;
auto signViewPos = banner->position.ToCoordsXY().ToTileCentre();
TileElement* tile_element = map_get_first_element_at(signViewPos);
if (tile_element == nullptr)
return nullptr;