You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.0 KiB
71 lines
2.0 KiB
/***************************************************************************
|
|
Name : MEMUTIL.C
|
|
Comment : Mem mgmnt and utilty functions
|
|
|
|
Revision Log
|
|
Date Name Description
|
|
-------- ----- ---------------------------------------------------------
|
|
***************************************************************************/
|
|
#define USE_DEBUG_CONTEXT DEBUG_CONTEXT_T30_MAIN
|
|
|
|
#include "prep.h"
|
|
#include "glbproto.h"
|
|
|
|
void MyAllocInit(PThrdGlbl pTG)
|
|
{
|
|
pTG->uCount=0;
|
|
pTG->uUsed=0;
|
|
}
|
|
|
|
LPBUFFER MyAllocBuf(PThrdGlbl pTG, LONG sSize)
|
|
{
|
|
LPBUFFER lpbf;
|
|
|
|
DEBUG_FUNCTION_NAME(_T("MyAllocBuf"));
|
|
|
|
if(pTG->uCount >= STATICBUFCOUNT)
|
|
{
|
|
DebugPrintEx(DEBUG_ERR,"Already alloced %d bufs", pTG->uCount);
|
|
return NULL;
|
|
}
|
|
else if(pTG->uUsed+sSize > STATICBUFSIZE)
|
|
{
|
|
DebugPrintEx( DEBUG_ERR,
|
|
"Already alloced %d bytes out of %d. Want %d",
|
|
pTG->uUsed,
|
|
STATICBUFSIZE,
|
|
sSize);
|
|
return NULL;
|
|
}
|
|
|
|
// init header
|
|
pTG->bfStaticBuf[pTG->uCount].lpbBegData = pTG->bfStaticBuf[pTG->uCount].lpbBegBuf =
|
|
pTG->bStaticBufData + pTG->uUsed;
|
|
|
|
pTG->bfStaticBuf[pTG->uCount].wLengthBuf = (USHORT) sSize;
|
|
pTG->uUsed += (USHORT) sSize;
|
|
pTG->bfStaticBuf[pTG->uCount].wLengthData = 0;
|
|
|
|
lpbf = &(pTG->bfStaticBuf[pTG->uCount++]);
|
|
|
|
return lpbf;
|
|
}
|
|
|
|
BOOL MyFreeBuf(PThrdGlbl pTG, LPBUFFER lpbf)
|
|
{
|
|
DEBUG_FUNCTION_NAME(_T("MyFreeBuf"));
|
|
|
|
if(pTG->uCount==0 || lpbf!= &(pTG->bfStaticBuf[pTG->uCount-1]))
|
|
{
|
|
DebugPrintEx( DEBUG_ERR,
|
|
"Not alloced or out-of-order free. Count=%d lpbf=%08lx bf=%08lx",
|
|
pTG->uCount,
|
|
lpbf,
|
|
(LPBUFFER)&pTG->bfStaticBuf);
|
|
return FALSE;
|
|
}
|
|
pTG->uCount--;
|
|
pTG->uUsed -= lpbf->wLengthBuf;
|
|
return TRUE;
|
|
}
|
|
|