From e332c2a691a1e96b6eeab395641bf371df82c83e Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 3 Mar 2021 10:21:49 +0100 Subject: [PATCH] Fix #14102: NPE in window_tile_inspector_invalidate() --- src/openrct2-ui/windows/TileInspector.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index ffe859e430..1e7444f7b7 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1625,6 +1625,16 @@ static void window_tile_inspector_invalidate(rct_window* w) break; case TileInspectorPage::Wall: { + bool canBeSloped = false; + bool hasAnimation = false; + const auto sceneryEntry = tileElement->AsWall()->GetEntry(); + if (sceneryEntry != nullptr) + { + const rct_wall_scenery_entry wallEntry = sceneryEntry->wall; + canBeSloped = !(wallEntry.flags & WALL_SCENERY_CANT_BUILD_ON_SLOPE); + hasAnimation = wallEntry.flags & WALL_SCENERY_IS_DOOR; + } + w->widgets[WIDX_WALL_SPINNER_HEIGHT].top = GBBT(propertiesAnchor, 0) + 3; w->widgets[WIDX_WALL_SPINNER_HEIGHT].bottom = GBBB(propertiesAnchor, 0) - 3; w->widgets[WIDX_WALL_SPINNER_HEIGHT_INCREASE].top = GBBT(propertiesAnchor, 0) + 4; @@ -1642,10 +1652,7 @@ static void window_tile_inspector_invalidate(rct_window* w) w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE].bottom = GBBB(propertiesAnchor, 2) - 4; w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE].top = GBBT(propertiesAnchor, 2) + 4; w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE].bottom = GBBB(propertiesAnchor, 2) - 4; - const auto wallType = tileElement->AsWall()->GetEntryIndex(); - const rct_wall_scenery_entry wallEntry = get_wall_entry(wallType)->wall; - const bool canBeSloped = !(wallEntry.flags & WALL_SCENERY_CANT_BUILD_ON_SLOPE); - const bool hasAnimation = wallEntry.flags & WALL_SCENERY_IS_DOOR; + // Wall slope dropdown WidgetSetEnabled(w, WIDX_WALL_DROPDOWN_SLOPE, canBeSloped); widget_invalidate(w, WIDX_WALL_DROPDOWN_SLOPE);