added no_memory callback that allows overriding the default abort behavior

This commit is contained in:
eihrul
2010-05-14 02:04:42 +00:00
parent 3ddbfb202d
commit c4138503f9
5 changed files with 22 additions and 14 deletions
+8 -5
View File
@@ -5,14 +5,11 @@
#define ENET_BUILDING_LIB 1
#include "enet/enet.h"
static ENetCallbacks callbacks = { malloc, free, rand };
static ENetCallbacks callbacks = { malloc, free, rand, abort };
int
enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks * inits)
{
if (version != ENET_VERSION)
return -1;
if (inits -> malloc != NULL || inits -> free != NULL)
{
if (inits -> malloc == NULL || inits -> free == NULL)
@@ -25,6 +22,12 @@ enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks * inits
if (inits -> rand != NULL)
callbacks.rand = inits -> rand;
if (version >= ENET_VERSION_CREATE(1, 2, 2))
{
if (inits -> no_memory != NULL)
callbacks.no_memory = inits -> no_memory;
}
return enet_initialize ();
}
@@ -34,7 +37,7 @@ enet_malloc (size_t size)
void * memory = callbacks.malloc (size);
if (memory == NULL)
abort ();
callbacks.no_memory ();
return memory;
}