3 void libmemcached_free(const memcached_st
*ptr
, void *mem
)
9 void *libmemcached_malloc(const memcached_st
*ptr
, size_t size
)
15 void *libmemcached_realloc(const memcached_st
*ptr
, void *mem
, size_t size
)
18 return realloc(mem
, size
);
21 void *libmemcached_calloc(const memcached_st
*ptr
, size_t nelem
, size_t size
)
23 if (ptr
->call_malloc
!= libmemcached_malloc
)
25 void *ret
= libmemcached_malloc(ptr
, nelem
* size
);
27 memset(ret
, 0, nelem
* size
);
32 return calloc(nelem
, size
);
35 memcached_return_t
memcached_set_memory_allocators(memcached_st
*ptr
,
36 memcached_malloc_fn mem_malloc
,
37 memcached_free_fn mem_free
,
38 memcached_realloc_fn mem_realloc
,
39 memcached_calloc_fn mem_calloc
)
41 /* All should be set, or none should be set */
42 if (mem_malloc
== NULL
&& mem_free
== NULL
&& mem_realloc
== NULL
&& mem_calloc
== NULL
)
44 ptr
->call_malloc
= libmemcached_malloc
;
45 ptr
->call_free
= libmemcached_free
;
46 ptr
->call_realloc
= libmemcached_realloc
;
47 ptr
->call_calloc
= libmemcached_calloc
;
49 else if (mem_malloc
== NULL
|| mem_free
== NULL
|| mem_realloc
== NULL
|| mem_calloc
== NULL
)
51 return MEMCACHED_FAILURE
;
55 ptr
->call_malloc
= mem_malloc
;
56 ptr
->call_free
= mem_free
;
57 ptr
->call_realloc
= mem_realloc
;
58 ptr
->call_calloc
= mem_calloc
;
61 return MEMCACHED_SUCCESS
;
64 void memcached_get_memory_allocators(const memcached_st
*ptr
,
65 memcached_malloc_fn
*mem_malloc
,
66 memcached_free_fn
*mem_free
,
67 memcached_realloc_fn
*mem_realloc
,
68 memcached_calloc_fn
*mem_calloc
)
70 *mem_malloc
= ptr
->call_malloc
;
71 *mem_free
= ptr
->call_free
;
72 *mem_realloc
= ptr
->call_realloc
;
73 *mem_calloc
= ptr
->call_calloc
;