1 /**
2  @file callbacks.c
3  @brief ENet callback functions
4 */
5 #define ENET_BUILDING_LIB 1
6 #include "enet/enet.h"
7 
8 static ENetCallbacks callbacks = { malloc, free, abort };
9 
10 int
enet_initialize_with_callbacks(ENetVersion version,const ENetCallbacks * inits)11 enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks * inits)
12 {
13    if (version < ENET_VERSION_CREATE (1, 3, 0))
14      return -1;
15 
16    if (inits -> malloc != NULL || inits -> free != NULL)
17    {
18       if (inits -> malloc == NULL || inits -> free == NULL)
19         return -1;
20 
21       callbacks.malloc = inits -> malloc;
22       callbacks.free = inits -> free;
23    }
24 
25    if (inits -> no_memory != NULL)
26      callbacks.no_memory = inits -> no_memory;
27 
28    return enet_initialize ();
29 }
30 
31 ENetVersion
enet_linked_version(void)32 enet_linked_version (void)
33 {
34     return ENET_VERSION;
35 }
36 
37 void *
enet_malloc(size_t size)38 enet_malloc (size_t size)
39 {
40    void * memory = callbacks.malloc (size);
41 
42    if (memory == NULL)
43      callbacks.no_memory ();
44 
45    return memory;
46 }
47 
48 void
enet_free(void * memory)49 enet_free (void * memory)
50 {
51    callbacks.free (memory);
52 }
53 
54