void _libmemcached_free(const memcached_st*, void *mem, void*)
{
if (mem)
- free(mem);
+ {
+ std::free(mem);
+ }
}
void *_libmemcached_malloc(const memcached_st *, size_t size, void *)
{
- return malloc(size);
+ return std::malloc(size);
}
void *_libmemcached_realloc(const memcached_st*, void *mem, size_t size, void *)
{
- return realloc(mem, size);
+ return std::realloc(mem, size);
}
void *_libmemcached_calloc(const memcached_st *self, size_t nelem, size_t size, void *context)
if (self->allocators.malloc != _libmemcached_malloc)
{
void *ret = _libmemcached_malloc(self, nelem * size, context);
- if (not ret)
+ if (ret == NULL)
+ {
memset(ret, 0, nelem * size);
+ }
return ret;
}
- return calloc(nelem, size);
+ return std::calloc(nelem, size);
}
struct memcached_allocator_t memcached_allocators_return_default(void)
memcached_calloc_fn mem_calloc,
void *context)
{
+ if (self == NULL)
+ {
+ return MEMCACHED_INVALID_ARGUMENTS;
+ }
+
/* All should be set, or none should be set */
- if (mem_malloc == NULL && mem_free == NULL && mem_realloc == NULL && mem_calloc == NULL)
+ if (mem_malloc == NULL and mem_free == NULL and mem_realloc == NULL and mem_calloc == NULL)
{
self->allocators= memcached_allocators_return_default();
}
- else if (mem_malloc == NULL || mem_free == NULL || mem_realloc == NULL || mem_calloc == NULL)
+ else if (mem_malloc == NULL or mem_free == NULL or mem_realloc == NULL or mem_calloc == NULL)
{
- return MEMCACHED_FAILURE;
+ return memcached_set_error(*self, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("NULL parameter provided for one or more allocators"));
}
else
{
memcached_realloc_fn *mem_realloc,
memcached_calloc_fn *mem_calloc)
{
- *mem_malloc= self->allocators.malloc;
- *mem_free= self->allocators.free;
- *mem_realloc= self->allocators.realloc;
- *mem_calloc= self->allocators.calloc;
+ if (self == NULL)
+ {
+ return;
+ }
+
+ if (mem_malloc)
+ {
+ *mem_malloc= self->allocators.malloc;
+ }
+
+ if (mem_free)
+ {
+ *mem_free= self->allocators.free;
+ }
+
+ if (mem_realloc)
+ {
+ *mem_realloc= self->allocators.realloc;
+ }
+
+ if (mem_calloc)
+ {
+ *mem_calloc= self->allocators.calloc;
+ }
}