X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fvmem.h;h=a0e5eba07039f109f1d84340947667806ca24c60;hb=91af766ac8815630662ce7fde84b165de512e80f;hp=cf3f502ca08a75ea19352b41aa79cda377c2301c;hpb=146174a91a192983720a158796dc066226ad0e55;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/vmem.h b/win32/vmem.h index cf3f502..a0e5eba 100644 --- a/win32/vmem.h +++ b/win32/vmem.h @@ -143,6 +143,9 @@ protected: long m_lAllocSize; // current alloc size long m_lRefCount; // number of current users CRITICAL_SECTION m_cs; // access lock +#ifdef _DEBUG_MEM + FILE* m_pLog; +#endif }; // #define _DEBUG_MEM @@ -185,6 +188,9 @@ VMem::VMem() ASSERT(bRet); InitializeCriticalSection(&m_cs); +#ifdef _DEBUG_MEM + m_pLog = 0; +#endif Init(); } @@ -193,6 +199,9 @@ VMem::~VMem(void) { ASSERT(HeapValidate(m_hHeap, HEAP_NO_SERIALIZE, NULL)); WALKHEAPTRACE(); +#ifdef _DEBUG_MEM + MemoryUsageMessage(NULL, 0, 0, 0); +#endif DeleteCriticalSection(&m_cs); BOOL bRet = HeapDestroy(m_hHeap); ASSERT(bRet); @@ -421,11 +430,19 @@ void VMem::FreeLock(void) int VMem::IsLocked(void) { +#if 0 + /* XXX TryEnterCriticalSection() is not available in some versions + * of Windows 95. Since this code is not used anywhere yet, we + * skirt the issue for now. */ BOOL bAccessed = TryEnterCriticalSection(&m_cs); if(bAccessed) { LeaveCriticalSection(&m_cs); } return !bAccessed; +#else + ASSERT(0); /* alarm bells for when somebody calls this */ + return 0; +#endif } @@ -634,21 +651,21 @@ void* VMem::Expand(void* block, size_t size) } #ifdef _DEBUG_MEM -#define LOG_FILENAME "P:\\Apps\\Perl\\Result.txt" +#define LOG_FILENAME ".\\MemLog.txt" void MemoryUsageMessage(char *str, long x, long y, int c) { - static FILE* fp = NULL; char szBuffer[512]; if(str) { - if(!fp) - fp = fopen(LOG_FILENAME, "w"); + if(!m_pLog) + m_pLog = fopen(LOG_FILENAME, "w"); sprintf(szBuffer, str, x, y, c); - fputs(szBuffer, fp); + fputs(szBuffer, m_pLog); } else { - fflush(fp); - fclose(fp); + fflush(m_pLog); + fclose(m_pLog); + m_pLog = 0; } }