From: <z-...@us...> - 2008-01-22 01:37:41
|
Revision: 7575 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=7575&view=rev Author: z-man Date: 2008-01-21 17:37:47 -0800 (Mon, 21 Jan 2008) Log Message: ----------- Silenced leak warnings from external libraries. Modified Paths: -------------- armagetronad/branches/0.2.8-auth/armagetronad/src/tools/tMemManager.cpp Modified: armagetronad/branches/0.2.8-auth/armagetronad/src/tools/tMemManager.cpp =================================================================== --- armagetronad/branches/0.2.8-auth/armagetronad/src/tools/tMemManager.cpp 2008-01-21 19:46:06 UTC (rev 7574) +++ armagetronad/branches/0.2.8-auth/armagetronad/src/tools/tMemManager.cpp 2008-01-22 01:37:47 UTC (rev 7575) @@ -410,6 +410,14 @@ } #endif +#ifdef LEAKFINDER +#ifdef PROFILER + chunk(ret).realSize = size; +#endif + chunk(ret).array=array; + chunk(ret).checksum=checksum; +#endif + #ifdef DEBUG wmemset(static_cast< wchar_t * >( data(ret) ), wchar_t(0xfedabeef), size / sizeof( wchar_t )); #else @@ -531,7 +539,7 @@ #ifdef LEAKFINDER void dumpleaks(std::ostream &s){ for (int i=myman->blocksize-1;i>=0;i--) - if (chunk(i).occupied){ + if (chunk(i).occupied && chunk(i).checksum >= 0 ){ s << chunk(i).checksum << " " << chunk(i).counter << '\n'; leak(); } @@ -566,6 +574,11 @@ tMemManager::~tMemManager(){ #ifdef LEAKFINDER + bool warn = true; +#ifdef HAVE_LIBZTHREAD + warn = false; +#endif + if (inited){ // l???sche das ding std::ofstream lw(leakname); @@ -588,10 +601,10 @@ memblock::destroy(blocks(i)); else{ #ifdef LEAKFINDER - static bool warn = true; if ( warn ) { std::cout << "Memmanager warning: leaving block untouched.\n"; + warn = false; } std::ofstream l(leakname,std::ios::app); blocks(i)->dumpleaks(l); @@ -604,7 +617,11 @@ memblock::destroy(full_blocks(i)); else{ #ifdef LEAKFINDER - std::cout << "Memmanager warning: leaving block untouched.\n"; + if ( warn ) + { + std::cout << "Memmanager warning: leaving block untouched.\n"; + warn = false; + } std::ofstream l(leakname,std::ios::app); full_blocks(i)->dumpleaks(l); #endif @@ -1032,13 +1049,16 @@ ((chunkinfo *)ret)->array=array; #ifdef PROFILER ((chunkinfo *)ret)->realSize=s; - if (!counter[checksum]){ - checksum_fileName [checksum] = fileName; - checksum_classname[checksum] = classname; - checksum_line [checksum] = line; + if ( checksum >= 0 ) + { + if (!counter[checksum]){ + checksum_fileName [checksum] = fileName; + checksum_classname[checksum] = classname; + checksum_line [checksum] = line; + } + checksum_blocks[checksum]++; + checksum_bytes[checksum]+=s; } - checksum_blocks[checksum]++; - checksum_bytes[checksum]+=s; #endif #else void *ret=malloc(s+sizeof(chunkinfo)); @@ -1210,7 +1230,10 @@ void* _cdecl operator new (size_t size) THROW_BADALLOC{ #ifdef LEAKFINDER - checksum = size; + checksum = size; +#ifdef HAVE_LIBZTHREAD + checksum = -1; +#endif array = false; #endif return tMemMan::Alloc(size); @@ -1277,7 +1300,7 @@ void operator delete (void *ptr,const char *classname,const char *file,int line) THROW_NOTHING{ #ifdef LEAKFINDER - checksum = 0; + checksum = -1; array = false; #endif if (ptr) tMemMan::Dispose(ptr); @@ -1286,7 +1309,10 @@ #ifdef LEAKFINDER checksum = size; array = true; +#ifdef HAVE_LIBZTHREAD + checksum = -1; #endif +#endif return tMemMan::Alloc(size); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |