Update header check.
authorBrian Aker <brian@tangent.org>
Fri, 27 Apr 2012 02:09:29 +0000 (19:09 -0700)
committerBrian Aker <brian@tangent.org>
Fri, 27 Apr 2012 02:09:29 +0000 (19:09 -0700)
ChangeLog
configure.ac
docs/memcached_behavior.rst
libmemcached/allocators.cc
libmemcached/analyze.cc
libmemcached/backtrace.cc
libmemcached/common.h
libmemcached/error.cc
libmemcached/memcached.cc
libmemcached/memory.h

index 4de2dd4742ddc9562e708a1c1fc54933bb7ca6be..e0807f77f16180a5301cb77b105898a56d093aac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+1.0.7
+* Add API call for exist calls.
+
 1.0.6 Sat Apr  7 18:26:49 PDT 2012
 * Fixes for gcc 4.7, lp:961812
 * Fix for restart issue that happens under testing.
index 19c54d5ceefac9486d6a13ee0c50bba57899ec8f..ac2b28b37387c123b5ff9085e95dba878ebef135 100644 (file)
@@ -122,15 +122,22 @@ AC_CHECK_FUNCS([strtoul])
 AC_CHECK_FUNCS([strtoull])
 
 AC_CHECK_HEADERS([arpa/inet.h])
+AC_CHECK_HEADERS([errno.h])
+AC_CHECK_HEADERS([execinfo.h])
 AC_CHECK_HEADERS([fcntl.h])
+AC_CHECK_HEADERS([inttypes.h])
 AC_CHECK_HEADERS([libintl.h])
 AC_CHECK_HEADERS([limits.h])
 AC_CHECK_HEADERS([malloc.h])
+AC_CHECK_HEADERS([math.h])
 AC_CHECK_HEADERS([netdb.h])
 AC_CHECK_HEADERS([netinet/in.h])
+AC_CHECK_HEADERS([pthread.h])
+AC_CHECK_HEADERS([stdarg.h])
 AC_CHECK_HEADERS([stddef.h])
+AC_CHECK_HEADERS([stdlib.h])
 AC_CHECK_HEADERS([sys/time.h])
-AC_CHECK_HEADERS([execinfo.h])
+AC_CHECK_HEADERS([unistd.h])
 AC_CHECK_HEADERS([cxxabi.h], 
                  AC_DEFINE([HAVE_CXXABI_H], [1], [Have cxxabi.h]),
                  AC_DEFINE([HAVE_CXXABI_H], [0], [Have cxxabi.h]))
index ee1bb234d22aca29ee8f7b45320c7d4e01907d66..6c40128294ecd13a5fa12f43758bd9964a6a1c4c 100644 (file)
@@ -143,7 +143,7 @@ Sets the compatibility mode. The value can be set to either MEMCACHED_KETAMA_COM
 
 .. c:type:: MEMCACHED_BEHAVIOR_POLL_TIMEOUT
 
-Modify the timeout value that is used by poll. The default value is -1. An signed int pointer must be passed to memcached_behavior_set to change this value. For memcached_behavior_get a signed int value will be cast and returned as the unsigned long long.
+Modify the timeout value that is used by poll. The default value is -1. An signed int must be passed to memcached_behavior_set to change this value (this requires casting). For memcached_behavior_get a signed int value will be cast and returned as the unsigned long long.
 
 .. c:type:: MEMCACHED_BEHAVIOR_USER_DATA
 .. deprecated:: < 0.30
index 98c87591a53615e496babd67c4b605dd4e4449e6..aaa66dbaf21219dbe9645062b70f072287387814 100644 (file)
@@ -41,18 +41,18 @@ 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)
@@ -68,7 +68,7 @@ void *_libmemcached_calloc(const memcached_st *self, size_t nelem, size_t size,
      return ret;
   }
 
-  return calloc(nelem, size);
+  return std::calloc(nelem, size);
 }
 
 struct memcached_allocator_t memcached_allocators_return_default(void)
@@ -126,8 +126,23 @@ void memcached_get_memory_allocators(const memcached_st *self,
     return;
   }
 
-  *mem_malloc= self->allocators.malloc;
-  *mem_free= self->allocators.free;
-  *mem_realloc= self->allocators.realloc;
-  *mem_calloc= self->allocators.calloc;
+  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;
+  }
 }
index 576b6a6b6037c4eac9b5e0ac21189583b9b44ec9..7115d06f2eada95bf8f38433bc3b0280c7dabb57 100644 (file)
@@ -42,7 +42,9 @@ static void calc_average_item_size(memcached_analysis_st *result,
                                    const uint64_t total_bytes)
 {
   if (total_items > 0 && total_bytes > 0)
+  {
     result->average_item_size= (uint32_t) (total_bytes / total_items);
+  }
 }
 
 static void calc_hit_ratio(memcached_analysis_st *result,
@@ -65,19 +67,25 @@ memcached_analysis_st *memcached_analyze(memcached_st *memc,
 {
   uint64_t total_items= 0, total_bytes= 0;
   uint64_t total_get_cmds= 0, total_get_hits= 0;
-  uint32_t server_count;
 
-  if (not memc or not memc_stat)
+  if (memc == NULL or memc_stat == NULL)
   {
     return NULL;
   }
 
+  memcached_return_t not_used;
+  if (error == NULL)
+  {
+    error= &not_used;
+  }
+
   *error= MEMCACHED_SUCCESS;
-  server_count= memcached_server_count(memc);
-  memcached_analysis_st *result= (memcached_analysis_st*)calloc(memcached_server_count(memc),
-                                                                sizeof(memcached_analysis_st));
+  uint32_t server_count= memcached_server_count(memc);
+  memcached_analysis_st *result= (memcached_analysis_st*)libmemcached_xcalloc(memc,
+                                                                              memcached_server_count(memc),
+                                                                              memcached_analysis_st);
 
-  if (not result)
+  if (result == NULL)
   {
     *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE;
     return NULL;
@@ -107,5 +115,5 @@ memcached_analysis_st *memcached_analyze(memcached_st *memc,
 
 void memcached_analyze_free(memcached_analysis_st *ptr)
 {
-  free(ptr);
+  libmemcached_free(ptr->root, ptr);
 }
index 8fb8acc7ec3938e694108e52a5fa43e23cae4261..3924e0b0ab27ffecfae5e52c3a21b990392e22e8 100644 (file)
@@ -69,11 +69,11 @@ void custom_backtrace(void)
 
   fprintf(stderr, "Number of stack frames obtained: %lu\n", (unsigned long)size);
 
-  char *named_function= (char *)::realloc(NULL, 1024);
+  char *named_function= (char *)std::realloc(NULL, 1024);
   
   if (named_function == NULL)
   {
-    ::free(strings);
+    std::free(strings);
     return;
   }
 
@@ -82,7 +82,7 @@ void custom_backtrace(void)
     if (USE_DEMANGLE)
     {
       size_t sz= 200;
-      char *named_function_ptr= (char *)::realloc(named_function, sz);
+      char *named_function_ptr= (char *)std::realloc(named_function, sz);
       if (named_function_ptr == NULL)
       {
         continue;
@@ -139,7 +139,7 @@ void custom_backtrace(void)
     }
   }
 
-  ::free(named_function);
-  ::free(strings);
+  std::free(named_function);
+  std::free(strings);
 #endif // HAVE_EXECINFO_H
 }
index e6b24944e3c4388f3a1c0a44de90ec04e5fdff04..f7559376910fc52897b30654bc665f65a266c6fe 100644 (file)
 #include <cstdlib>
 #include <cstring>
 #include <ctime>
-#include <ctype.h>
+#include <cctype>
+#include <cerrno>
+#include <climits>
 #else
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <errno.h>
+#include <limits.h>
 #endif
 
-#include <errno.h>
 #include <fcntl.h>
-#include <limits.h>
 #include <sys/types.h>
 #include <unistd.h>
 
index 1ca355b82231ac424fbbc89fb5bc1d50d9d1c8e4..b2af961a6364b36b9f2662fba7bdb3f47c40edc3 100644 (file)
@@ -208,6 +208,7 @@ memcached_return_t memcached_set_error(memcached_server_st& self, memcached_retu
 {
   assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client");
   assert_msg(rc != MEMCACHED_SOME_ERRORS, "Programmer error, MEMCACHED_SOME_ERRORS was about to be set on a memcached_server_st");
+
   memcached_string_t tmp= { str, length };
   return memcached_set_error(self, rc, at, tmp);
 }
@@ -458,13 +459,13 @@ static void _error_free(memcached_error_t *error)
 
   _error_free(error->next);
 
-  if (error && error->root)
+  if (error and error->root)
   {
     libmemcached_free(error->root, error);
   }
   else if (error)
   {
-    free(error);
+    libmemcached_free(error->root, error);
   }
 }
 
@@ -524,7 +525,7 @@ memcached_return_t memcached_last_error(memcached_st *memc)
     return MEMCACHED_INVALID_ARGUMENTS;
   }
 
-  if (not memc->error_messages)
+  if (memc->error_messages == NULL)
   {
     return MEMCACHED_SUCCESS;
   }
@@ -539,7 +540,7 @@ int memcached_last_error_errno(memcached_st *memc)
     return 0;
   }
 
-  if (not memc->error_messages)
+  if (memc->error_messages == NULL)
   {
     return 0;
   }
@@ -554,12 +555,12 @@ const char *memcached_server_error(memcached_server_instance_st server)
     return NULL;
   }
 
-  if (not server->error_messages)
+  if (server->error_messages == NULL)
   {
     return memcached_strerror(server->root, MEMCACHED_SUCCESS);
   }
 
-  if (not server->error_messages->size)
+  if (server->error_messages->size == 0)
   {
     return memcached_strerror(server->root, server->error_messages->rc);
   }
index cd0768eb957bce67341c97cc09820c440dddfa33..2eb91281e42176f3e72e096f3021df1f938a03e5 100644 (file)
@@ -124,7 +124,7 @@ static inline bool _memcached_init(memcached_st *self)
   return true;
 }
 
-static void _free(memcached_st *ptr, bool release_st)
+static void __memcached_free(memcached_st *ptr, bool release_st)
 {
   /* If we have anything open, lets close it now */
   send_quit(ptr);
@@ -174,7 +174,7 @@ memcached_st *memcached_create(memcached_st *ptr)
   }
   else
   {
-    ptr= (memcached_st *)malloc(sizeof(memcached_st));
+    ptr= (memcached_st *)libmemcached_xmalloc(NULL, memcached_st);
 
     if (ptr == NULL)
     {
@@ -244,7 +244,7 @@ memcached_return_t memcached_reset(memcached_st *ptr)
 
   bool stored_is_allocated= memcached_is_allocated(ptr);
   uint64_t query_id= ptr->query_id;
-  _free(ptr, false);
+  __memcached_free(ptr, false);
   memcached_create(ptr);
   memcached_set_allocated(ptr, stored_is_allocated);
   ptr->query_id= query_id;
@@ -283,7 +283,7 @@ void memcached_free(memcached_st *ptr)
 {
   if (ptr)
   {
-    _free(ptr, true);
+    __memcached_free(ptr, true);
   }
 }
 
@@ -384,11 +384,21 @@ memcached_st *memcached_clone(memcached_st *clone, const memcached_st *source)
 
 void *memcached_get_user_data(const memcached_st *ptr)
 {
+  if (ptr == NULL)
+  {
+    return NULL;
+  }
+
   return ptr->user_data;
 }
 
 void *memcached_set_user_data(memcached_st *ptr, void *data)
 {
+  if (ptr == NULL)
+  {
+    return NULL;
+  }
+
   void *ret= ptr->user_data;
   ptr->user_data= data;
 
@@ -402,18 +412,30 @@ memcached_return_t memcached_push(memcached_st *destination, const memcached_st
 
 memcached_server_write_instance_st memcached_server_instance_fetch(memcached_st *ptr, uint32_t server_key)
 {
+  if (ptr == NULL)
+  {
+    return NULL;
+  }
+
   return &ptr->servers[server_key];
 }
 
 memcached_server_instance_st memcached_server_instance_by_position(const memcached_st *ptr, uint32_t server_key)
 {
+  if (ptr == NULL)
+  {
+    return NULL;
+  }
+
   return &ptr->servers[server_key];
 }
 
 uint64_t memcached_query_id(const memcached_st *self)
 {
-  if (not self)
+  if (self == NULL)
+  {
     return 0;
+  }
 
   return self->query_id;
 }
index dd0092370aa7e35e21455f06885f8c1fa5f71458..06cc9985b27b8ea240b6b10507a22974fa87ff06 100644 (file)
@@ -36,6 +36,8 @@
 
 #pragma once
 
+#include <config.h>
+
 #include <libmemcached-1.0/struct/memcached.h>
 
 #ifdef __cplusplus
@@ -54,7 +56,11 @@ static inline void libmemcached_free(const memcached_st *self, void *mem)
   }
   else if (mem)
   {
+#ifdef __cplusplus
+    std::free(mem);
+#else
     free(mem);
+#endif
   }
 }
 
@@ -65,7 +71,11 @@ static inline void *libmemcached_malloc(const memcached_st *self, const size_t s
     return self->allocators.malloc(self, size, self->allocators.context);
   }
 
+#ifdef __cplusplus
+  return std::malloc(size);
+#else
   return malloc(size);
+#endif
 }
 #define libmemcached_xmalloc(__memcachd_st, __type) ((__type *)libmemcached_malloc((__memcachd_st), sizeof(__type)))
 
@@ -76,7 +86,11 @@ static inline void *libmemcached_realloc(const memcached_st *self, void *mem, si
     return self->allocators.realloc(self, mem, nmemb * size, self->allocators.context);
   }
 
-  return realloc(mem, size);
+#ifdef __cplusplus
+    return std::realloc(mem, size);
+#else
+    return realloc(mem, size);
+#endif
 }
 #define libmemcached_xrealloc(__memcachd_st, __mem, __nelem, __type) ((__type *)libmemcached_realloc((__memcachd_st), (__mem), (__nelem), sizeof(__type)))
 #define libmemcached_xvalloc(__memcachd_st, __nelem, __type) ((__type *)libmemcached_realloc((__memcachd_st), NULL, (__nelem), sizeof(__type)))
@@ -88,6 +102,10 @@ static inline void *libmemcached_calloc(const memcached_st *self, size_t nelem,
     return self->allocators.calloc(self, nelem, size, self->allocators.context);
   }
 
-  return calloc(nelem, size);
+#ifdef __cplusplus
+    return std::calloc(nelem, size);
+#else
+    return calloc(nelem, size);
+#endif
 }
 #define libmemcached_xcalloc(__memcachd_st, __nelem, __type) ((__type *)libmemcached_calloc((__memcachd_st), (__nelem), sizeof(__type)))