Memory Leak Fixes: Difference between revisions
Jump to navigation
Jump to search
» See Compiling vgui_controls.lib «
m (→bin\client.dll) |
|||
Line 9: | Line 9: | ||
> } | > } | ||
> m_MetaClassKeyValues.RemoveAll(); | > m_MetaClassKeyValues.RemoveAll(); | ||
=bin\server.dll= | |||
==WCEdit== | |||
src\dlls\wcedit.cpp | |||
449a450,460 | |||
Vector *g_EntityPositions = NULL; | |||
QAngle *g_EntityOrientations = NULL; | |||
string_t *g_EntityClassnames = NULL; | |||
>class GlobalCleanUp : public CAutoGameSystem | |||
>{ | |||
> void Shutdown() | |||
> { | |||
> delete [] g_EntityPositions; | |||
> delete [] g_EntityOrientations; | |||
> delete [] g_EntityClassnames; | |||
> delete this; | |||
> } | |||
>}; | |||
> | |||
459a471 | |||
if ( !g_EntityPositions ) | |||
{ | |||
> new GlobalCleanUp(); | |||
g_EntityPositions = new Vector[NUM_ENT_ENTRIES]; | |||
g_EntityOrientations = new QAngle[NUM_ENT_ENTRIES]; | |||
// have to save these too because some entities change the classname on spawn (e.g. prop_physics_override, physics_prop) | |||
g_EntityClassnames = new string_t[NUM_ENT_ENTRIES]; | |||
} | |||
=src\lib\vgui_controls.lib= | =src\lib\vgui_controls.lib= | ||
<center><font style="line-height: 2em;font-size:2em;">» See [[Compiling vgui_controls.lib]] «</font></center> | <center><font style="line-height: 2em;font-size:2em;">» See [[Compiling vgui_controls.lib]] «</font></center> |
Revision as of 19:42, 13 January 2006
On this page goes fixes for memory leaks in the SDK.
bin\client.dll
CPanelMetaClassMgrImp class
src\cl_dll\panelmetaclassmgr.cpp 236a237,241 > while(m_MetaClassKeyValues.Count()>0) > { > m_MetaClassKeyValues[0]->deleteThis(); > } > m_MetaClassKeyValues.RemoveAll();
bin\server.dll
WCEdit
src\dlls\wcedit.cpp 449a450,460 Vector *g_EntityPositions = NULL; QAngle *g_EntityOrientations = NULL; string_t *g_EntityClassnames = NULL; >class GlobalCleanUp : public CAutoGameSystem >{ > void Shutdown() > { > delete [] g_EntityPositions; > delete [] g_EntityOrientations; > delete [] g_EntityClassnames; > delete this; > } >}; > 459a471 if ( !g_EntityPositions ) { > new GlobalCleanUp(); g_EntityPositions = new Vector[NUM_ENT_ENTRIES]; g_EntityOrientations = new QAngle[NUM_ENT_ENTRIES]; // have to save these too because some entities change the classname on spawn (e.g. prop_physics_override, physics_prop) g_EntityClassnames = new string_t[NUM_ENT_ENTRIES]; }
src\lib\vgui_controls.lib
AnimationController class
src\vgui2\controls\AnimationController.cpp 1292a1293,1311 ~CPanelAnimationDictionary() { > int v2, v1 = m_AnimationMaps.Count(); > PanelAnimationMapEntry *pCur; > PanelAnimationMap *pMap; > for(int x=0;x<v1;x++) > { > pMap = m_AnimationMaps[x].map; > if(pMap) > { > v2 = pMap->entries.Count(); > pCur = &(pMap->entries[x]); > for(int y=0;y<v2;y++) > { > delete [] pCur->m_pszScriptName; > delete [] pCur->m_pszVariable; > delete [] pCur->m_pszType; > delete [] pCur->m_pszDefaultValue; > } > } > } m_PanelAnimationMapPool.Clear(); }
CBitmapImagePanel class
src\vgui2\controls\BitmapImagePanel.h 21a22 CBitmapImagePanel( vgui::Panel *parent, char const *panelName, char const *filename = NULL ); > ~CBitmapImagePanel();
src\vgui2\controls\BitmapImagePanel.cpp 61a62,67 >CBitmapImagePanel::~CBitmapImagePanel() >{ > delete [] m_pszImageName; > delete [] m_pszColorName; >} >
DirectorySelectDialog class
src\vgui2\controls\DirectorySelectDialog.cpp 258c258,260 < int rootIndex = m_pDirTree->AddItem(new KeyValues("root", "Text", m_szCurrentDrive), -1); --- > KeyValues *kv = new KeyValues("root", "Text", m_szCurrentDrive); > int rootIndex = m_pDirTree->AddItem(kv, -1); > kv->deleteThis(); 294a297 m_pDirTree->AddItem(kv, parentNodeIndex); > kv->deleteThis(); } 410a414 int itemID = m_pDirTree->AddItem(kv, selectedIndex); > kv->deleteThis();
FileOpenDialog class
src\vgui2\controls\FileOpenDialog.cpp 506a507 int itemID = m_pFileTypeCombo->AddItem(filterName, kv); > kv->deleteThis(); if ( bActive )
ScrollBar class
src\vgui2\controls\ScrollBar.cpp 323c323 < _button[index]->SetParent((Panel *)NULL); --- > _button[index]->DeletePanel(); 351c351 < _slider->SetParent((Panel *)NULL); --- > _slider->DeletePanel();
SectionedListPanel class
src\vgui2\controls\SectionedListPanel.cpp 1579a1580 m_hEditModePanel->SetVisible(false); m_hEditModePanel->SetParent((Panel *)NULL); > delete m_hEditModePanel; m_hEditModePanel = NULL;