1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

0024276: Memory leak due to a static variable

Cleaning of selected entities to avoid a memory leak.
This commit is contained in:
vro
2013-10-22 08:49:01 +04:00
committed by abv
parent fd4a696350
commit 30bf45dc70
4 changed files with 26 additions and 2 deletions

View File

@@ -149,6 +149,9 @@ myIsAutoActivateSelMode( Standard_True )
void AIS_InteractiveContext::Delete() const
{
//Clear the static current selection. Else the memory
//is not release
AIS_Selection::ClearCurrentSelection();
#ifdef OCC172
// to avoid an exception
if ( AIS_Selection::Find( mySelectionName.ToCString() ) )

View File

@@ -87,6 +87,8 @@ is
---Purpose:
returns mutable Selection from AIS;
ClearCurrentSelection(myclass);
---Purpose: Clears selection.
Select(myclass);
---Purpose: removes all the object of the currentselection.

View File

@@ -50,9 +50,10 @@
#define MaxSizeOfResult 100000
#endif
//current selection (handle)
static Handle(AIS_Selection) theCurrentSelection;
static void AIS_Sel_CurrentSelection (Handle(AIS_Selection)& InputSel)
{
static Handle(AIS_Selection) theCurrentSelection;
if(!InputSel.IsNull())
theCurrentSelection = InputSel;
else
@@ -418,6 +419,11 @@ void AIS_Selection::Remove(const Standard_CString aName)
#endif
AIS_Sel_GetSelections().Remove(I);
}
}
// clean the static current selection handle
void AIS_Selection::ClearCurrentSelection()
{
theCurrentSelection.Nullify();
}