diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/Gadget/GadgetListBox.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/Gadget/GadgetListBox.cpp index a2b8bc5f3f7..b716f7dd9b0 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/Gadget/GadgetListBox.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/Gadget/GadgetListBox.cpp @@ -268,6 +268,12 @@ static void adjustDisplay( GameWindow *window, Int adjustment, } child = list->slider->winGetChild(); + if( child == NULL ) + { + // Slider thumb button is missing - cannot adjust display properly + DEBUG_LOG(( "adjustDisplay: slider child is NULL, skipping slider adjustment" )); + return; + } child->winGetSize( &sliderChildSize.x, &sliderChildSize.y ); sData->numTicks = (float)((sliderSize.y - sliderChildSize.y) / (float)sData->maxVal); diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/GameWindowManager.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/GameWindowManager.cpp index 55219989b2e..cb7d8a60b72 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/GameWindowManager.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/GameWindowManager.cpp @@ -2349,6 +2349,15 @@ GameWindow *GameWindowManager::gogoGadgetSlider( GameWindow *parent, button = gogoGadgetPushButton( slider, statusFlags, 0, 0, width, width+1, &buttonInstData, NULL, TRUE ); + // Check if button creation failed + if( button == NULL ) + { + DEBUG_LOG(( "gogoGadgetSlider error: Failed to create slider thumb button" )); + // Clean up the slider window before returning + winDestroy( slider ); + return NULL; + } + // Protect against divide by zero if( sliderData->maxVal == sliderData->minVal ) sliderData->maxVal = sliderData->minVal + 1; diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/Gadget/GadgetListBox.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/Gadget/GadgetListBox.cpp index d906b74d8b9..6b8b72d2ed9 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/Gadget/GadgetListBox.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/Gadget/GadgetListBox.cpp @@ -268,6 +268,12 @@ static void adjustDisplay( GameWindow *window, Int adjustment, } child = list->slider->winGetChild(); + if( child == NULL ) + { + // Slider thumb button is missing - cannot adjust display properly + DEBUG_LOG(( "adjustDisplay: slider child is NULL, skipping slider adjustment" )); + return; + } child->winGetSize( &sliderChildSize.x, &sliderChildSize.y ); sData->numTicks = (float)((sliderSize.y - sliderChildSize.y) / (float)sData->maxVal); diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GameWindowManager.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GameWindowManager.cpp index 34022efecdd..05cf9ea582e 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GameWindowManager.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GameWindowManager.cpp @@ -2352,6 +2352,15 @@ GameWindow *GameWindowManager::gogoGadgetSlider( GameWindow *parent, button = gogoGadgetPushButton( slider, statusFlags, 0, 0, width, width+1, &buttonInstData, NULL, TRUE ); + // Check if button creation failed + if( button == NULL ) + { + DEBUG_LOG(( "gogoGadgetSlider error: Failed to create slider thumb button" )); + // Clean up the slider window before returning + winDestroy( slider ); + return NULL; + } + // Protect against divide by zero if( sliderData->maxVal == sliderData->minVal ) sliderData->maxVal = sliderData->minVal + 1;