Files

43 lines
759 B
OpenEdge ABL

#ifndef RADMALWI
#define RADMALWI
#ifdef __RADWINEXT__
u32 GetLimit(u16 sel);
#pragma aux GetLimit = "lsl eax,ax" parm [ax];
RADEXPFUNC void PTR4* RADEXPLINK radmalloc(u32 numbytes)
{
u32 temp;
HGLOBAL handle;
if ((numbytes==0) || (numbytes==0xffffffff))
return(0);
handle=GlobalAlloc(GMEM_SHARE|GMEM_MOVEABLE,numbytes+4);
if (handle) {
GlobalFix(handle);
temp=(u32)GlobalLock(handle);
temp=((u32)_16To32(temp));
((u32 PTR4*)temp)[0]=handle;
return(((u32 PTR4*)temp)+1);
}
return(0);
}
RADEXPFUNC void RADEXPLINK radfree(void PTR4* ptr)
{
HGLOBAL h=((u32 PTR4*)ptr)[-1];
GlobalUnfix(h);
GlobalUnlock(h);
GlobalFree(h);
}
#else
#include "radmal.i"
#endif
#endif