#include "Desk.Debug.h"
#include "Desk.Error2.h"

#include "Defs.h"


#ifdef Desk_DeskLib_DEBUG
	int	Desk_deskmem_debuglevel = 0;
#endif

Desk_deskmem_errorblock	Desk_deskmem_globalerror = { 0, NULL };

#ifdef _DLL
Desk_deskmem_errorblock*	Desk_DeskMem__Ref_errorblock( void)	{ return &Desk_deskmem_globalerror;	}
#endif



void*	Desk_DeskMem__HandleError( size_t size, void *oldptr)
/*
This sets up the global Desk_error2_block for the specified alloc parameters,
and calls the Error2 handler. If this returns with the error handled, we
return the new pointer, otherwise we return NULL.
 */
{
Desk_Debug1_Printf( "Desk_DeskMem__XHandleError called. Size=%i, oldptr=%p\n", size, oldptr);

Desk_Error2_ClearErrorBlock( &Desk_Error2_globalblock);

Desk_Error2_globalblock.type		= Desk_error2_type_DESKMEM;
Desk_Error2_globalblock.data.deskmem	= &Desk_deskmem_globalerror;

Desk_deskmem_globalerror.size	= size;
Desk_deskmem_globalerror.ptr	= oldptr;

Desk_Error2_Handle( &Desk_Error2_globalblock);
Desk_Debug_Printf( "Desk_DeskMem__XHandleError: Error handler has found memory.\n");
return	Desk_Error2_globalblock.data.deskmem->ptr;
}

