summaryrefslogtreecommitdiffhomepage
path: root/callbacks.c
diff options
context:
space:
mode:
authoreihrul <eihrul>2010-05-14 02:04:42 +0000
committereihrul <eihrul>2010-05-14 02:04:42 +0000
commitc4138503f9986e9afe032476daf033bd2d95b4d8 (patch)
treec6e6daf4f3145f830689156aaa8a93963872efe4 /callbacks.c
parent3ddbfb202d89675e1ba91c3cf053a0bd6ebbbf13 (diff)
downloadenet-c4138503f9986e9afe032476daf033bd2d95b4d8.tar.gz
enet-c4138503f9986e9afe032476daf033bd2d95b4d8.zip
added no_memory callback that allows overriding the default abort behavior
Diffstat (limited to 'callbacks.c')
-rw-r--r--callbacks.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/callbacks.c b/callbacks.c
index 7f960af..250b967 100644
--- a/callbacks.c
+++ b/callbacks.c
@@ -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;
}