@@ -30,25 +30,33 @@ using std::list;
3030#define  CGUI_SA_GOTHIC_SIZE          47 
3131#define  CGUI_MTA_SANS_FONT_SIZE      9 
3232
33- CGUI_Impl::CGUI_Impl (IDirect3DDevice9* pDevice) : m_HasSchemeLoaded(false ), m_fCurrentServerCursorAlpha(1 .0f )
33+ CGUI_Impl::CGUI_Impl (IDirect3DDevice9* pDevice) : 
34+     m_HasSchemeLoaded(false ), 
35+     m_fCurrentServerCursorAlpha(1 .0f ),
36+     m_pDevice(pDevice),
37+     m_pRenderer(nullptr ),
38+     m_pSystem(nullptr ),
39+     m_pFontManager(nullptr ),
40+     m_pImageSetManager(nullptr ),
41+     m_pSchemeManager(nullptr ),
42+     m_pWindowManager(nullptr ),
43+     m_pTop(nullptr ),
44+     m_pCursor(nullptr ),
45+     m_pDefaultFont(nullptr ),
46+     m_pSmallFont(nullptr ),
47+     m_pBoldFont(nullptr ),
48+     m_pClearFont(nullptr ),
49+     m_pSAHeaderFont(nullptr ),
50+     m_pSAGothicFont(nullptr ),
51+     m_pSansFont(nullptr ),
52+     m_pUniFont(nullptr ),
53+     m_ulPreviousUnique(0 ),
54+     m_eInputMode(INPUTMODE_NO_BINDS_ON_EDIT),
55+     m_Channel(INPUT_CORE)
3456{
3557    m_RenderOkTimer.SetMaxIncrement (100 );
3658
37-     //  Init
38-     m_pDevice = pDevice;
39-     /* 
40-     m_pCharacterKeyHandler = NULL; 
41-     m_pKeyDownHandler = NULL; 
42-     m_pMouseClickHandler = NULL; 
43-     m_pMouseDoubleClickHandler = NULL; 
44-     m_pMouseWheelHandler = NULL; 
45-     m_pMouseMoveHandler = NULL; 
46-     m_pMouseEnterHandler = NULL; 
47-     m_pMouseLeaveHandler = NULL; 
48-     m_pMovedHandler = NULL; 
49-     m_pSizedHandler = NULL; 
50-     */  
51-     m_Channel = INPUT_CORE;
59+     //  Callback arrays are default-initialized to empty state by their constructors
5260
5361    //  Create a GUI system and get the windowmanager
5462    m_pRenderer = new  CEGUI::DirectX9Renderer (pDevice, 0 );
@@ -104,7 +112,19 @@ CGUI_Impl::CGUI_Impl(IDirect3DDevice9* pDevice) : m_HasSchemeLoaded(false), m_fC
104112
105113CGUI_Impl::~CGUI_Impl ()
106114{
115+     //  Clean up font objects to prevent memory leaks
116+     delete  m_pUniFont;
117+     delete  m_pDefaultFont;
118+     delete  m_pSmallFont;
119+     delete  m_pBoldFont;
120+     delete  m_pClearFont;
121+     delete  m_pSAHeaderFont;
122+     delete  m_pSAGothicFont;
123+     delete  m_pSansFont;
124+     
125+     //  Clean up CEGUI system - this automatically deletes the renderer
107126    delete  CEGUI::System::getSingletonPtr ();
127+     //  DO NOT delete m_pRenderer - it's already deleted by System destructor
108128}
109129
110130void  CGUI_Impl::SetSkin (const  char * szName)
0 commit comments