/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS DNS Shared Library * FILE: lib/dnslib/memory.c * PURPOSE: DNS Memory Manager Implementation and Heap. */ /* INCLUDES ******************************************************************/ #include "precomp.h" /* DATA **********************************************************************/ typedef PVOID (WINAPI *PDNS_ALLOC_FUNCTION)(IN SIZE_T Size); typedef VOID (WINAPI *PDNS_FREE_FUNCTION)(IN PVOID Buffer); PDNS_ALLOC_FUNCTION pDnsAllocFunction; PDNS_FREE_FUNCTION pDnsFreeFunction; /* FUNCTIONS *****************************************************************/ VOID WINAPI Dns_Free(IN PVOID Address) { /* Check if whoever imported us specified a special free function */ if (pDnsFreeFunction) { /* Use it */ pDnsFreeFunction(Address); } else { /* Use our own */ LocalFree(Address); } } PVOID WINAPI Dns_AllocZero(IN SIZE_T Size) { PVOID Buffer; /* Check if whoever imported us specified a special allocation function */ if (pDnsAllocFunction) { /* Use it to allocate the memory */ Buffer = pDnsAllocFunction(Size); if (Buffer) { /* Zero it out */ RtlZeroMemory(Buffer, Size); } } else { /* Use our default */ Buffer = LocalAlloc(LMEM_ZEROINIT, Size); } /* Return the allocate pointer */ return Buffer; }