Fix #23655: Crash with invalid widget index

This commit is contained in:
ζeh Matt 2025-01-21 12:00:24 +02:00
parent 5bec62c540
commit e454f27518
No known key found for this signature in database
GPG key ID: 18CE582C71A225B0

View file

@ -290,7 +290,7 @@ namespace OpenRCT2
// Get window and widget under cursor position
w = windowMgr->FindFromPoint(screenCoords);
widgetIndex = w == nullptr ? -1 : windowMgr->FindWidgetFromPoint(*w, screenCoords);
widgetIndex = w == nullptr ? kWidgetIndexNull : windowMgr->FindWidgetFromPoint(*w, screenCoords);
widget = widgetIndex == kWidgetIndexNull ? nullptr : &w->widgets[widgetIndex];
switch (_inputState)
@ -1557,7 +1557,8 @@ namespace OpenRCT2
{
if (gTooltipCursor == screenCoords)
{
if (gCurrentRealTimeTicks >= _tooltipNotShownTimeout && w != nullptr && WidgetIsVisible(*w, widgetIndex))
if (gCurrentRealTimeTicks >= _tooltipNotShownTimeout && w != nullptr && widgetIndex != kWidgetIndexNull
&& WidgetIsVisible(*w, widgetIndex))
{
gTooltipCloseTimeout = gCurrentRealTimeTicks + 8000;
WindowTooltipOpen(w, widgetIndex, screenCoords);