Skip to content

Commit f8fd4a5

Browse files
JohnsterIDxezon
authored andcommitted
fix(casts): Add explicit void* casts for function pointers (#2067)
Add explicit void* casts to function pointers in function tables and callback registrations to resolve MinGW-w64 type-punning warnings. Changes: 1. FunctionLexicon.cpp: - Cast all GameWindow callback functions to (void*) in: * gameWinDrawTable * gameWinSystemTable * gameWinInputTable * gameWinHelpBoxTable * gameWinTooltipTable 2. W3DFunctionLexicon.cpp: - Cast all W3D callback functions to (void*) in lexicon tables 3. SkirmishGameOptionsMenu.cpp: - Cast aiPlayerControlCallback to (void*) in window registrations MinGW-w64 requires explicit casts when storing function pointers with different signatures in void* fields, as the compiler is stricter about type safety than MSVC in this context. These casts are safe because the functions are later cast back to their correct types before invocation. Files modified: - FunctionLexicon.cpp (both games) - W3DFunctionLexicon.cpp (both games) - SkirmishGameOptionsMenu.cpp (both games)
1 parent be30428 commit f8fd4a5

6 files changed

Lines changed: 626 additions & 626 deletions

File tree

Generals/Code/GameEngine/Source/Common/System/FunctionLexicon.cpp

Lines changed: 254 additions & 254 deletions
Large diffs are not rendered by default.

Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/SkirmishGameOptionsMenu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ void CheckForCDAtGameStart( gameStartCallback callback )
484484
{
485485
// popup a dialog asking for a CD
486486
ExMessageBoxOkCancel(TheGameText->fetch("GUI:InsertCDPrompt"), TheGameText->fetch("GUI:InsertCDMessage"),
487-
callback, checkCDCallback, cancelStartBecauseOfNoCD);
487+
(void*)callback, checkCDCallback, cancelStartBecauseOfNoCD);
488488
}
489489
else
490490
{

Generals/Code/GameEngineDevice/Source/W3DDevice/Common/System/W3DFunctionLexicon.cpp

Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -43,69 +43,69 @@
4343
static FunctionLexicon::TableEntry gameWinDrawTable [] =
4444
{
4545

46-
{ NAMEKEY_INVALID, "GameWinDefaultDraw", GameWinDefaultDraw },
47-
{ NAMEKEY_INVALID, "W3DGameWinDefaultDraw", W3DGameWinDefaultDraw },
48-
49-
{ NAMEKEY_INVALID, "W3DGadgetPushButtonDraw", W3DGadgetPushButtonDraw },
50-
{ NAMEKEY_INVALID, "W3DGadgetPushButtonImageDraw", W3DGadgetPushButtonImageDraw },
51-
{ NAMEKEY_INVALID, "W3DGadgetCheckBoxDraw", W3DGadgetCheckBoxDraw },
52-
{ NAMEKEY_INVALID, "W3DGadgetCheckBoxImageDraw", W3DGadgetCheckBoxImageDraw },
53-
{ NAMEKEY_INVALID, "W3DGadgetRadioButtonDraw", W3DGadgetRadioButtonDraw },
54-
{ NAMEKEY_INVALID, "W3DGadgetRadioButtonImageDraw", W3DGadgetRadioButtonImageDraw },
55-
{ NAMEKEY_INVALID, "W3DGadgetTabControlDraw", W3DGadgetTabControlDraw },
56-
{ NAMEKEY_INVALID, "W3DGadgetTabControlImageDraw", W3DGadgetTabControlImageDraw },
57-
{ NAMEKEY_INVALID, "W3DGadgetListBoxDraw", W3DGadgetListBoxDraw },
58-
{ NAMEKEY_INVALID, "W3DGadgetListBoxImageDraw", W3DGadgetListBoxImageDraw },
59-
{ NAMEKEY_INVALID, "W3DGadgetComboBoxDraw", W3DGadgetComboBoxDraw },
60-
{ NAMEKEY_INVALID, "W3DGadgetComboBoxImageDraw", W3DGadgetComboBoxImageDraw },
61-
{ NAMEKEY_INVALID, "W3DGadgetHorizontalSliderDraw", W3DGadgetHorizontalSliderDraw },
62-
{ NAMEKEY_INVALID, "W3DGadgetHorizontalSliderImageDraw", W3DGadgetHorizontalSliderImageDraw },
63-
{ NAMEKEY_INVALID, "W3DGadgetVerticalSliderDraw", W3DGadgetVerticalSliderDraw },
64-
{ NAMEKEY_INVALID, "W3DGadgetVerticalSliderImageDraw", W3DGadgetVerticalSliderImageDraw },
65-
{ NAMEKEY_INVALID, "W3DGadgetProgressBarDraw", W3DGadgetProgressBarDraw },
66-
{ NAMEKEY_INVALID, "W3DGadgetProgressBarImageDraw", W3DGadgetProgressBarImageDraw },
67-
{ NAMEKEY_INVALID, "W3DGadgetStaticTextDraw", W3DGadgetStaticTextDraw },
68-
{ NAMEKEY_INVALID, "W3DGadgetStaticTextImageDraw", W3DGadgetStaticTextImageDraw },
69-
{ NAMEKEY_INVALID, "W3DGadgetTextEntryDraw", W3DGadgetTextEntryDraw },
70-
{ NAMEKEY_INVALID, "W3DGadgetTextEntryImageDraw", W3DGadgetTextEntryImageDraw },
71-
72-
{ NAMEKEY_INVALID, "W3DLeftHUDDraw", W3DLeftHUDDraw },
73-
{ NAMEKEY_INVALID, "W3DCameoMovieDraw", W3DCameoMovieDraw },
74-
{ NAMEKEY_INVALID, "W3DRightHUDDraw", W3DRightHUDDraw },
75-
{ NAMEKEY_INVALID, "W3DPowerDraw", W3DPowerDraw },
76-
{ NAMEKEY_INVALID, "W3DMainMenuDraw", W3DMainMenuDraw },
77-
{ NAMEKEY_INVALID, "W3DMainMenuFourDraw", W3DMainMenuFourDraw },
78-
{ NAMEKEY_INVALID, "W3DMetalBarMenuDraw", W3DMetalBarMenuDraw },
79-
{ NAMEKEY_INVALID, "W3DCreditsMenuDraw", W3DCreditsMenuDraw },
80-
{ NAMEKEY_INVALID, "W3DClockDraw", W3DClockDraw },
81-
{ NAMEKEY_INVALID, "W3DMainMenuMapBorder", W3DMainMenuMapBorder },
82-
{ NAMEKEY_INVALID, "W3DMainMenuButtonDropShadowDraw", W3DMainMenuButtonDropShadowDraw },
83-
{ NAMEKEY_INVALID, "W3DMainMenuRandomTextDraw", W3DMainMenuRandomTextDraw },
84-
{ NAMEKEY_INVALID, "W3DThinBorderDraw", W3DThinBorderDraw },
85-
{ NAMEKEY_INVALID, "W3DShellMenuSchemeDraw", W3DShellMenuSchemeDraw },
86-
{ NAMEKEY_INVALID, "W3DCommandBarBackgroundDraw", W3DCommandBarBackgroundDraw },
87-
{ NAMEKEY_INVALID, "W3DCommandBarTopDraw", W3DCommandBarTopDraw },
88-
{ NAMEKEY_INVALID, "W3DCommandBarGenExpDraw", W3DCommandBarGenExpDraw },
89-
{ NAMEKEY_INVALID, "W3DCommandBarHelpPopupDraw", W3DCommandBarHelpPopupDraw },
90-
91-
{ NAMEKEY_INVALID, "W3DCommandBarGridDraw", W3DCommandBarGridDraw },
92-
93-
94-
{ NAMEKEY_INVALID, "W3DCommandBarForegroundDraw", W3DCommandBarForegroundDraw },
95-
{ NAMEKEY_INVALID, "W3DNoDraw", W3DNoDraw },
96-
{ NAMEKEY_INVALID, "W3DDrawMapPreview", W3DDrawMapPreview },
97-
98-
{ NAMEKEY_INVALID, nullptr, nullptr },
46+
{ NAMEKEY_INVALID, "GameWinDefaultDraw", (void*)GameWinDefaultDraw },
47+
{ NAMEKEY_INVALID, "W3DGameWinDefaultDraw", (void*)W3DGameWinDefaultDraw },
48+
49+
{ NAMEKEY_INVALID, "W3DGadgetPushButtonDraw", (void*)W3DGadgetPushButtonDraw },
50+
{ NAMEKEY_INVALID, "W3DGadgetPushButtonImageDraw", (void*)W3DGadgetPushButtonImageDraw },
51+
{ NAMEKEY_INVALID, "W3DGadgetCheckBoxDraw", (void*)W3DGadgetCheckBoxDraw },
52+
{ NAMEKEY_INVALID, "W3DGadgetCheckBoxImageDraw", (void*)W3DGadgetCheckBoxImageDraw },
53+
{ NAMEKEY_INVALID, "W3DGadgetRadioButtonDraw", (void*)W3DGadgetRadioButtonDraw },
54+
{ NAMEKEY_INVALID, "W3DGadgetRadioButtonImageDraw", (void*)W3DGadgetRadioButtonImageDraw },
55+
{ NAMEKEY_INVALID, "W3DGadgetTabControlDraw", (void*)W3DGadgetTabControlDraw },
56+
{ NAMEKEY_INVALID, "W3DGadgetTabControlImageDraw", (void*)W3DGadgetTabControlImageDraw },
57+
{ NAMEKEY_INVALID, "W3DGadgetListBoxDraw", (void*)W3DGadgetListBoxDraw },
58+
{ NAMEKEY_INVALID, "W3DGadgetListBoxImageDraw", (void*)W3DGadgetListBoxImageDraw },
59+
{ NAMEKEY_INVALID, "W3DGadgetComboBoxDraw", (void*)W3DGadgetComboBoxDraw },
60+
{ NAMEKEY_INVALID, "W3DGadgetComboBoxImageDraw", (void*)W3DGadgetComboBoxImageDraw },
61+
{ NAMEKEY_INVALID, "W3DGadgetHorizontalSliderDraw", (void*)W3DGadgetHorizontalSliderDraw },
62+
{ NAMEKEY_INVALID, "W3DGadgetHorizontalSliderImageDraw", (void*)W3DGadgetHorizontalSliderImageDraw },
63+
{ NAMEKEY_INVALID, "W3DGadgetVerticalSliderDraw", (void*)W3DGadgetVerticalSliderDraw },
64+
{ NAMEKEY_INVALID, "W3DGadgetVerticalSliderImageDraw", (void*)W3DGadgetVerticalSliderImageDraw },
65+
{ NAMEKEY_INVALID, "W3DGadgetProgressBarDraw", (void*)W3DGadgetProgressBarDraw },
66+
{ NAMEKEY_INVALID, "W3DGadgetProgressBarImageDraw", (void*)W3DGadgetProgressBarImageDraw },
67+
{ NAMEKEY_INVALID, "W3DGadgetStaticTextDraw", (void*)W3DGadgetStaticTextDraw },
68+
{ NAMEKEY_INVALID, "W3DGadgetStaticTextImageDraw", (void*)W3DGadgetStaticTextImageDraw },
69+
{ NAMEKEY_INVALID, "W3DGadgetTextEntryDraw", (void*)W3DGadgetTextEntryDraw },
70+
{ NAMEKEY_INVALID, "W3DGadgetTextEntryImageDraw", (void*)W3DGadgetTextEntryImageDraw },
71+
72+
{ NAMEKEY_INVALID, "W3DLeftHUDDraw", (void*)W3DLeftHUDDraw },
73+
{ NAMEKEY_INVALID, "W3DCameoMovieDraw", (void*)W3DCameoMovieDraw },
74+
{ NAMEKEY_INVALID, "W3DRightHUDDraw", (void*)W3DRightHUDDraw },
75+
{ NAMEKEY_INVALID, "W3DPowerDraw", (void*)W3DPowerDraw },
76+
{ NAMEKEY_INVALID, "W3DMainMenuDraw", (void*)W3DMainMenuDraw },
77+
{ NAMEKEY_INVALID, "W3DMainMenuFourDraw", (void*)W3DMainMenuFourDraw },
78+
{ NAMEKEY_INVALID, "W3DMetalBarMenuDraw", (void*)W3DMetalBarMenuDraw },
79+
{ NAMEKEY_INVALID, "W3DCreditsMenuDraw", (void*)W3DCreditsMenuDraw },
80+
{ NAMEKEY_INVALID, "W3DClockDraw", (void*)W3DClockDraw },
81+
{ NAMEKEY_INVALID, "W3DMainMenuMapBorder", (void*)W3DMainMenuMapBorder },
82+
{ NAMEKEY_INVALID, "W3DMainMenuButtonDropShadowDraw", (void*)W3DMainMenuButtonDropShadowDraw },
83+
{ NAMEKEY_INVALID, "W3DMainMenuRandomTextDraw", (void*)W3DMainMenuRandomTextDraw },
84+
{ NAMEKEY_INVALID, "W3DThinBorderDraw", (void*)W3DThinBorderDraw },
85+
{ NAMEKEY_INVALID, "W3DShellMenuSchemeDraw", (void*)W3DShellMenuSchemeDraw },
86+
{ NAMEKEY_INVALID, "W3DCommandBarBackgroundDraw", (void*)W3DCommandBarBackgroundDraw },
87+
{ NAMEKEY_INVALID, "W3DCommandBarTopDraw", (void*)W3DCommandBarTopDraw },
88+
{ NAMEKEY_INVALID, "W3DCommandBarGenExpDraw", (void*)W3DCommandBarGenExpDraw },
89+
{ NAMEKEY_INVALID, "W3DCommandBarHelpPopupDraw", (void*)W3DCommandBarHelpPopupDraw },
90+
91+
{ NAMEKEY_INVALID, "W3DCommandBarGridDraw", (void*)W3DCommandBarGridDraw },
92+
93+
94+
{ NAMEKEY_INVALID, "W3DCommandBarForegroundDraw", (void*)W3DCommandBarForegroundDraw },
95+
{ NAMEKEY_INVALID, "W3DNoDraw", (void*)W3DNoDraw },
96+
{ NAMEKEY_INVALID, "W3DDrawMapPreview", (void*)W3DDrawMapPreview },
97+
98+
{ NAMEKEY_INVALID, nullptr, nullptr }
9999

100100
};
101101

102102
// Game Window init methods -----------------------------------------------------------------------
103103
static FunctionLexicon::TableEntry layoutInitTable [] =
104104
{
105105

106-
{ NAMEKEY_INVALID, "W3DMainMenuInit", W3DMainMenuInit },
106+
{ NAMEKEY_INVALID, "W3DMainMenuInit", (void*)W3DMainMenuInit },
107107

108-
{ NAMEKEY_INVALID, nullptr, nullptr },
108+
{ NAMEKEY_INVALID, nullptr, nullptr }
109109

110110
};
111111

0 commit comments

Comments
 (0)