changed to prototype of qse_mmgr_t function to accept mmgr itself instead of mmgr->ctx and fixed a memory leak bug under a certain failure condition

This commit is contained in:
2014-07-09 15:01:16 +00:00
parent 36b20b4169
commit 82a639045f
10 changed files with 100 additions and 41 deletions

View File

@ -24,19 +24,19 @@
QSE_BEGIN_NAMESPACE(QSE)
/////////////////////////////////
void* Mmgr::alloc_mem (void* ctx, size_t n)
void* Mmgr::alloc_mem (mmgr_t* mmgr, size_t n)
{
return ((Mmgr*)ctx)->allocMem (n);
return ((Mmgr*)mmgr->ctx)->allocMem (n);
}
void* Mmgr::realloc_mem (void* ctx, void* ptr, size_t n)
void* Mmgr::realloc_mem (mmgr_t* mmgr, void* ptr, size_t n)
{
return ((Mmgr*)ctx)->reallocMem (ptr, n);
return ((Mmgr*)mmgr->ctx)->reallocMem (ptr, n);
}
void Mmgr::free_mem (void* ctx, void* ptr)
void Mmgr::free_mem (mmgr_t* mmgr, void* ptr)
{
((Mmgr*)ctx)->freeMem (ptr);
((Mmgr*)mmgr->ctx)->freeMem (ptr);
}
/////////////////////////////////

View File

@ -22,6 +22,12 @@
#if defined(_WIN32)
# include <windows.h>
/*
#elif defined(__OS2__)
# define INCL_DOSMEMMGR
# include <os2.h>
# include <bsememf.h>
*/
#else
# include <stdlib.h>
#endif
@ -439,7 +445,7 @@ void* qse_memrmem (const void* hs, qse_size_t hl, const void* nd, qse_size_t nl)
return QSE_NULL;
}
static void* mmgr_alloc (void* data, qse_size_t n)
static void* mmgr_alloc (qse_mmgr_t* mmgr, qse_size_t n)
{
#if defined(_WIN32)
HANDLE heap;
@ -452,7 +458,7 @@ static void* mmgr_alloc (void* data, qse_size_t n)
#endif
}
static void* mmgr_realloc (void* data, void* ptr, qse_size_t n)
static void* mmgr_realloc (qse_mmgr_t* mmgr, void* ptr, qse_size_t n)
{
#if defined(_WIN32)
HANDLE heap;
@ -466,7 +472,7 @@ static void* mmgr_realloc (void* data, void* ptr, qse_size_t n)
#endif
}
static void mmgr_free (void* data, void* ptr)
static void mmgr_free (qse_mmgr_t* mmgr, void* ptr)
{
#if defined(_WIN32)
HANDLE heap;