From dd14f7ac9690eb21f570c79b5a083f5b0e1472b3 Mon Sep 17 00:00:00 2001 From: "dveditz%netscape.com" Date: Mon, 5 Jul 1999 23:56:24 +0000 Subject: [PATCH] Fixing grotesque memory leak that kept killing my Win9x system --- config/makedep.cpp | 31 +++++++++++++++++++++++-------- config/makedep.exe | Bin 145920 -> 146432 bytes 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/config/makedep.cpp b/config/makedep.cpp index 29f324ea265..064620aafd8 100644 --- a/config/makedep.cpp +++ b/config/makedep.cpp @@ -104,14 +104,14 @@ class CFileRecord { public: CString m_shortName; CString m_pathName; - CPtrArray m_includes; + CPtrArray m_includes; // pointers to CFileRecords in fileMap BOOL m_bVisited; BOOL m_bSystem; BOOL m_bSource; - static CMapStringToPtr fileMap; - static CStringArray orderedFileNames; - static CMapStringToPtr includeMap; - static CMapStringToPtr noDependMap; + static CMapStringToPtr fileMap; // contains all allocated CFileRecords + static CStringArray orderedFileNames; + static CMapStringToPtr includeMap; // pointer to CFileRecords in fileMap + static CMapStringToPtr noDependMap; CFileRecord( const char *shortName, const char* pFullName, BOOL bSystem, BOOL bSource): m_shortName( shortName ), @@ -648,10 +648,10 @@ public: }; -CMapStringToPtr CFileRecord::fileMap; +CMapStringToPtr CFileRecord::fileMap; // contains all allocated CFileRecords CStringArray CFileRecord::orderedFileNames; -CMapStringToPtr CFileRecord::includeMap; -CMapStringToPtr CFileRecord::noDependMap; +CMapStringToPtr CFileRecord::includeMap; // pointers to CFileRecords in fileMap +CMapStringToPtr CFileRecord::noDependMap; // no data, just an index int main( int argc, char** argv ){ int i = 1; @@ -847,5 +847,20 @@ int main( int argc, char** argv ){ } } iRecursion--; + + if (iRecursion == 0 ) + { + // last time through -- clean up allocated CFileRecords! + CFileRecord *pFRec; + CString name; + POSITION next; + + next = CFileRecord::fileMap.GetStartPosition(); + while( next ){ + CFileRecord::fileMap.GetNextAssoc( next, name, *(void**)&pFRec ); + delete pFRec; + } + } + return mainReturn; } diff --git a/config/makedep.exe b/config/makedep.exe index 1b5f1dd021aa138ff25feceb6fa85f62c55aebc9..20fc4b0f8073fcb2485301db6bd2aa27591a2ecf 100755 GIT binary patch delta 12637 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 Lp6e~W6aN1IsW41w delta 12536 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