Simply free so that we can not have a bunch of if/else around using custom/not custom...
authorBrian Aker <brian@tangent.org>
Mon, 23 May 2011 23:24:07 +0000 (16:24 -0700)
committerBrian Aker <brian@tangent.org>
Mon, 23 May 2011 23:24:07 +0000 (16:24 -0700)
ChangeLog
libmemcached/allocators.cc
libmemcached/array.c
libmemcached/memcached.cc
libmemcached/memory.h
libmemcached/server.cc
libmemcached/stats.cc

index 2cf2aea18fe98edd7eda8a9ee41d5ce47e71a10a..afbfce1af91ab5235b5e40b2b0bf4371249c0abf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
- * Updates to C++ interface
+ * Updates to C++ interface 
+ * Custom free allocators need to now check for value before calling free.
 
 0.49 Thu Apr 14 08:43:37 PDT 2011
   * Fix calls to auto methods so that if value is not passed in nothing bad happens.
index d0d9e57e8659dfdd0e333ad24e310a128be1d18a..ec491ddbc825d61bb64d6723bcae61d12aa151a3 100644 (file)
@@ -39,7 +39,8 @@
 
 void _libmemcached_free(const memcached_st*, void *mem, void*)
 {
-  free(mem);
+  if (mem)
+    free(mem);
 }
 
 void *_libmemcached_malloc(const memcached_st *, size_t size, void *)
index 36df81d90ce163e47a4d57a2f386d935a34432cf..5096b1874bed974bfc88e9561ca39a57be578b5f 100644 (file)
@@ -108,14 +108,7 @@ void memcached_array_free(memcached_array_st *array)
     return;
 
   WATCHPOINT_ASSERT(array->root);
-  if (array && array->root)
-  {
-    libmemcached_free(array->root, array);
-  }
-  else if (array)
-  {
-    free(array);
-  }
+  libmemcached_free(array->root, array);
 }
 
 size_t memcached_array_size(memcached_array_st *array)
index 2bba44a1aaa719dd75217451b936b03b0d5c55b1..21306f2a94f784e3b1fae0e4ad834f53209b1b88 100644 (file)
@@ -157,8 +157,7 @@ static void _free(memcached_st *ptr, bool release_st)
   if (ptr->on_cleanup)
     ptr->on_cleanup(ptr);
 
-  if (ptr->ketama.continuum)
-    libmemcached_free(ptr, ptr->ketama.continuum);
+  libmemcached_free(ptr, ptr->ketama.continuum);
 
   memcached_array_free(ptr->prefix_key);
   ptr->prefix_key= NULL;
@@ -190,7 +189,7 @@ memcached_st *memcached_create(memcached_st *ptr)
   {
     ptr= (memcached_st *)malloc(sizeof(memcached_st));
 
-    if (! ptr)
+    if (not ptr)
     {
       return NULL; /*  MEMCACHED_MEMORY_ALLOCATION_FAILURE */
     }
index 7b30e3711314b5cd731ffab7cce81d8dbbed45c9..65d06b8c77a2b8940485db8d43d7258513372933 100644 (file)
 
 static inline void libmemcached_free(const memcached_st *self, void *mem)
 {
-  self->allocators.free(self, mem, self->allocators.context);
+  if (self)
+  {
+    self->allocators.free(self, mem, self->allocators.context);
+  }
+  else if (mem)
+  {
+    free(mem);
+  }
 }
 
 static inline void *libmemcached_malloc(const memcached_st *self, const size_t size)
 {
-  return self->allocators.malloc(self, size, self->allocators.context);
+  if (self)
+  {
+    return self->allocators.malloc(self, size, self->allocators.context);
+  }
+
+  return malloc(size);
 }
 
 static inline void *libmemcached_realloc(const memcached_st *self, void *mem, const size_t size)
 {
-  return self->allocators.realloc(self, mem, size, self->allocators.context);
+  if (self)
+  {
+    return self->allocators.realloc(self, mem, size, self->allocators.context);
+  }
+
+  return realloc(mem, size);
 }
 
 static inline void *libmemcached_calloc(const memcached_st *self, size_t nelem, size_t size)
 {
-  return self->allocators.calloc(self, nelem, size, self->allocators.context);
+  if (self)
+  {
+    return self->allocators.calloc(self, nelem, size, self->allocators.context);
+  }
+
+  return calloc(nelem, size);
 }
index cb0f0c2f65bdaeeaf5436f460ef98c523499ac0c..72f1b822808fd810c76fb8a4b14001926ef0235b 100644 (file)
@@ -146,14 +146,7 @@ void memcached_server_free(memcached_server_st *self)
 
   if (memcached_is_allocated(self))
   {
-    if (self->root)
-    {
-      libmemcached_free(self->root, self);
-    }
-    else
-    {
-      free(self);
-    }
+    libmemcached_free(self->root, self);
   }
   else
   {
@@ -300,14 +293,7 @@ void memcached_server_list_free(memcached_server_list_st self)
   }
 
   memcached_st *root= self->root;
-  if (root)
-  {
-    libmemcached_free(root, self);
-  }
-  else
-  {
-    free(self);
-  }
+  libmemcached_free(root, self);
 }
 
 uint32_t memcached_servers_set_count(memcached_server_st *servers, uint32_t count)
index 3c269be142ef7fa6f59f3621f65d73a3ec1c93bb..eb2904438e746223ff399d5dbde01dcfce6e7555 100644 (file)
@@ -552,15 +552,10 @@ void memcached_stat_free(const memcached_st *ptr, memcached_stat_st *memc_stat)
   if (memc_stat->root)
   {
     libmemcached_free(memc_stat->root, memc_stat);
+    return;
   }
-  else if (ptr)
-  {
-    libmemcached_free(ptr, memc_stat);
-  }
-  else
-  {
-    free(memc_stat);
-  }
+
+  libmemcached_free(ptr, memc_stat);
 }
 
 static memcached_return_t call_stat_fn(memcached_st *ptr,