diff --git a/Source/Terra/geo.cpp b/Source/Terra/geo.cpp index 820cbe56..6b645d42 100644 --- a/Source/Terra/geo.cpp +++ b/Source/Terra/geo.cpp @@ -1515,7 +1515,6 @@ loc_notOverlapped: ; int elementGeoBreak::unengagedID=0; //Инициализация уникального ида элемента трещины для поиска родителей при завершении geoBreak1::geoBreak1(int x, int y, int rad, int beginNumBreaks){ //0-случайное кол-во - elGB.erase(elGB.begin(), elGB.end());//очистка списка элементов трещин if(beginNumBreaks==0) beginNumBreaks=2+terLogicRND(MAX_BEGIN_BREAKS-2);//Диапазон от 2 до MAX_BEGIN_BREAKS float range_corner=2*pi/((float)beginNumBreaks); @@ -1530,6 +1529,13 @@ geoBreak1::geoBreak1(int x, int y, int rad, int beginNumBreaks){ //0-случа } }; +geoBreak1::~geoBreak1() { + for (auto el : elGB) { + delete el; + } + elGB.clear(); +} + std::list::iterator geoBreak1::delEementGeoBreak(std::list::iterator pp) { int _ownID=(*pp)->ownerID; diff --git a/Source/Terra/geo.h b/Source/Terra/geo.h index 4962de2f..91dfbce6 100644 --- a/Source/Terra/geo.h +++ b/Source/Terra/geo.h @@ -335,6 +335,7 @@ const float CORNER_DISPERSION_BREAKS=(float)(pi+pi/2); struct geoBreak1{ //точечный разлом std::list elGB; geoBreak1(int x, int y, int rad=MAX_LENGHT_ELEMENTGEOBREAK, int beginNumBreaks=0); //0-случайное кол-во + ~geoBreak1(); std::list::iterator delEementGeoBreak(std::list::iterator pp); int quant(void); }; @@ -1160,7 +1161,7 @@ struct s_WaspBirthGeoAction { radiusCount=0; }; ~s_WaspBirthGeoAction(){ - if(pGeoBrk1) delete pGeoBrk1; + delete pGeoBrk1; } bool quant(void){ quantCount++; @@ -1168,7 +1169,7 @@ struct s_WaspBirthGeoAction { if((radiusCountquant()==0){ delete pGeoBrk1; - pGeoBrk1=0; + pGeoBrk1= nullptr; } } if(quantCount>=WASP_SHIFT_QUANT_FOR_GEOBREAK){