3 void libmemcached_free(memcached_st
*ptr
, void *mem
)
9 void *libmemcached_malloc(memcached_st
*ptr
, size_t size
)
15 void *libmemcached_realloc(memcached_st
*ptr
, void *mem
, size_t size
)
18 return realloc(mem
, size
);
21 void *libmemcached_calloc(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
)
50 return MEMCACHED_FAILURE
;
53 ptr
->call_malloc
= mem_malloc
;
54 ptr
->call_free
= mem_free
;
55 ptr
->call_realloc
= mem_realloc
;
56 ptr
->call_calloc
= mem_calloc
;
59 return MEMCACHED_SUCCESS
;
62 void memcached_get_memory_allocators(memcached_st
*ptr
,
63 memcached_malloc_fn
*mem_malloc
,
64 memcached_free_fn
*mem_free
,
65 memcached_realloc_fn
*mem_realloc
,
66 memcached_calloc_fn
*mem_calloc
)
68 *mem_malloc
= ptr
->call_malloc
;
69 *mem_free
= ptr
->call_free
;
70 *mem_realloc
= ptr
->call_realloc
;
71 *mem_calloc
= ptr
->call_calloc
;