From: <ave...@us...> - 2003-11-06 21:03:01
|
Update of /cvsroot/gemrb/gemrb/gemrb/plugins/Core In directory sc8-pr-cvs1:/tmp/cvs-serv6150/Core Modified Files: Interface.cpp Log Message: synchronising cvs, added freeing of character sheets Index: Interface.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/Interface.cpp,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** Interface.cpp 5 Nov 2003 21:13:10 -0000 1.43 --- Interface.cpp 6 Nov 2003 21:02:57 -0000 1.44 *************** *** 55,58 **** --- 55,79 ---- } + #define FreeInterfaceVector(type, variable, member) \ + { \ + std::vector<type>::iterator i; \ + for(i = variable.begin(); i != variable.end(); ++i) { \ + if(!(*i).free) { \ + core->FreeInterface((*i).member); \ + (*i).free = true; \ + } \ + } \ + } + + #define FreeResourceVector(type, variable) \ + { \ + std::vector<type*>::iterator i=variable.begin(); \ + while(variable.size() ) { \ + if(*i) delete(*i); \ + variable.erase(i); \ + i = variable.begin(); \ + } \ + } + Interface::~Interface(void) { *************** *** 61,78 **** if(soundmgr) delete(soundmgr); ! std::vector<Font*>::iterator m = fonts.begin(); ! while( fonts.size() ) { ! delete(*m); ! fonts.erase(m); ! m = fonts.begin(); ! } ! std::vector<Window*>::iterator w = windows.begin(); ! while( windows.size() ) { ! if((*w)) { ! delete(*w); ! } ! windows.erase(w); ! w = windows.begin(); ! } if(key) plugin->FreePlugin(key); --- 82,88 ---- if(soundmgr) delete(soundmgr); ! FreeResourceVector(Font, fonts); ! FreeResourceVector(Window, windows); ! if(key) plugin->FreePlugin(key); *************** *** 95,115 **** if(tokens) delete(tokens); ! std::vector<Table>::iterator t; ! for(t = tables.begin(); t != tables.end(); ++t) { ! if(!(*t).free) { ! core->FreeInterface((*t).tm); ! (*t).free = true; ! } ! } ! std::vector<Symbol>::iterator s; ! for(s = symbols.begin(); s != symbols.end(); ++s) { ! if(!(*s).free) { ! core->FreeInterface((*s).sm); ! (*s).free = true; ! } ! } delete(console); delete(plugin); } int Interface::Init() --- 105,115 ---- if(tokens) delete(tokens); ! FreeInterfaceVector(Table, tables, tm); ! FreeInterfaceVector(Symbol, symbols, sm); ! FreeResourceVector(Character, sheets); delete(console); delete(plugin); } + int Interface::Init() |