Updated to build on OSX (will now require updated autoconf)
author <brian@dhcpvisitor216236.slac.stanford.edu> <>
Thu, 25 Oct 2007 18:00:04 +0000 (11:00 -0700)
committer <brian@dhcpvisitor216236.slac.stanford.edu> <>
Thu, 25 Oct 2007 18:00:04 +0000 (11:00 -0700)
New --enable-debug option for configure
WATCHPOINT are now compiled out (so safe to leave in code).
Cleaned up case in connect where wrong answer might be sent.
Cleaned up warnings in code around variable which might not have been
initialized.
Fixed usert test 3 (aka it was not using memory correctly)

config/bootstrap
configure.in
include/memcached.h
lib/memcached_connect.c
lib/memcached_get.c
lib/memcached_string.c
tests/test.c

index ab2e114af2502545012c588ca6ca7db4d8c32827..cc463d86d6abbf5ab36688ac8a88461a5940c05f 100755 (executable)
@@ -24,11 +24,11 @@ run() {
 ## jump out if one of the programs returns 'false'
 set -e
 
-## on macosx glibtoolize, others have libtool
+## We do not currently support glibtoolize
 if test x$LIBTOOLIZE = x; then
-  if test \! "x`which glibtoolize 2> /dev/null | grep -v '^no'`" = x; then
-    LIBTOOLIZE=glibtoolize
-  elif test \! "x`which libtoolize-1.5 2> /dev/null | grep -v '^no'`" = x; then
+#  if test \! "x`which glibtoolize 2> /dev/null | grep -v '^no'`" = x; then
+#    LIBTOOLIZE=glibtoolize
+  if test \! "x`which libtoolize-1.5 2> /dev/null | grep -v '^no'`" = x; then
     LIBTOOLIZE=libtoolize-1.5
   elif test \! "x`which libtoolize 2> /dev/null | grep -v '^no'`" = x; then
     LIBTOOLIZE=libtoolize
index b6b849d4d3c29ebf7dd0de483970200f3e7a373f..7a95f8cb5f7238c66ec136da072bd377847f2bcb 100644 (file)
@@ -8,12 +8,18 @@ AC_PROG_LIBTOOL
 LIBTOOL="$LIBTOOL --preserve-dup-deps"
 AC_SUBST(LIBTOOL)dnl
 
+sinclude(config/debug.m4)
 sinclude(config/dtrace.m4)
 
 # We only support GCC and Sun's forte at the moment
 if test "$GCC" = "yes"
 then
-  CFLAGS="-Wall -ggdb"
+  if test "$ENABLE_DEBUG" = "yes"
+  then
+    CFLAGS="-Wall -ggdb"
+  else
+    CFLAGS="-Wall -O3"
+  fi
 else
   CFLAGS="-Xa -xstrconst -mt -D_FORTEC_ -fast -m64"
   LDFLAGS="-lsocket -lnsl"
index 64afedc00dabc8fd51f6e2e90fefed945bfa59f6..d8d471a81d99878d41f01e5cbd9478f8bee3d81d 100644 (file)
@@ -211,11 +211,19 @@ char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *stat,
                                 memcached_return *error);
 
 /* Some personal debugging functions */
+#ifdef HAVE_DEBUG
 #define WATCHPOINT printf("\nWATCHPOINT %s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
 #define WATCHPOINT_ERROR(A) printf("\nWATCHPOINT %s:%d %s\n", __FILE__, __LINE__, memcached_strerror(NULL, A));fflush(stdout);
 #define WATCHPOINT_STRING(A) printf("\nWATCHPOINT %s:%d (%s) %s\n", __FILE__, __LINE__,__func__,A);fflush(stdout);
 #define WATCHPOINT_NUMBER(A) printf("\nWATCHPOINT %s:%d (%s) %zu\n", __FILE__, __LINE__,__func__,(size_t)(A));fflush(stdout);
 #define WATCHPOINT_ERRNO(A) printf("\nWATCHPOINT %s:%d (%s) %s\n", __FILE__, __LINE__,__func__, strerror(A));A= 0;fflush(stdout);
+#else
+#define WATCHPOINT
+#define WATCHPOINT_ERROR(A) 
+#define WATCHPOINT_STRING(A)
+#define WATCHPOINT_NUMBER(A)
+#define WATCHPOINT_ERRNO(A)
+#endif
 
 
 #ifdef __cplusplus
index 34613ddd13a7a1007a8ec45b3bbdd2ed69170911..abf15676bf6d23a58cad66db5f433db1e0fcc9db 100644 (file)
@@ -95,7 +95,7 @@ test_connect:
 
 memcached_return memcached_connect(memcached_st *ptr, unsigned int server_key)
 {
-  memcached_return rc;
+  memcached_return rc= MEMCACHED_NO_SERVERS;
   LIBMEMCACHED_MEMCACHED_CONNECT_START();
 
   if (ptr->connected == ptr->number_of_hosts)
@@ -112,7 +112,15 @@ memcached_return memcached_connect(memcached_st *ptr, unsigned int server_key)
     unsigned int x;
 
     for (x= 0; x < ptr->number_of_hosts; x++)
-      rc= memcached_real_connect(ptr, x);
+    {
+      memcached_return possible_rc;
+
+      possible_rc= memcached_real_connect(ptr, x);
+      rc= MEMCACHED_SUCCESS;
+
+      if (possible_rc != MEMCACHED_SUCCESS)
+        rc= MEMCACHED_SOME_ERRORS;
+    }
   }
   LIBMEMCACHED_MEMCACHED_CONNECT_END();
 
index 8b85fb9a22f40f1bca340a982c57015f51e9fb3c..3ddeff886eb75cc8ab7af02d997dd29a75c4d043 100644 (file)
@@ -125,6 +125,9 @@ read_error:
   return NULL;
 }
 
+/* 
+  What happens if no servers exist?
+*/
 char *memcached_get(memcached_st *ptr, char *key, size_t key_length, 
                     size_t *value_length, 
                     uint16_t *flags,
@@ -133,7 +136,7 @@ char *memcached_get(memcached_st *ptr, char *key, size_t key_length,
   char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
   char *buf_ptr= buffer;
   unsigned int server_key;
-  char *value;
+  char *value= NULL;
   LIBMEMCACHED_MEMCACHED_GET_START();
 
   server_key= memcached_generate_hash(ptr, key, key_length);
@@ -198,19 +201,18 @@ memcached_return memcached_mget(memcached_st *ptr,
                                 char **keys, size_t *key_length, 
                                 unsigned int number_of_keys)
 {
-  char buffer[HUGE_STRING_LEN];
   unsigned int x;
-  memcached_return rc;
+  memcached_return rc= MEMCACHED_NOTFOUND;
   char *cursor_key_exec;
   LIBMEMCACHED_MEMCACHED_MGET_START();
-
   ptr->cursor_server= 0;
-  memset(buffer, 0, HUGE_STRING_LEN);
+
+  if (number_of_keys == 0)
+    return MEMCACHED_NOTFOUND;
 
   cursor_key_exec= (char *)malloc(sizeof(char) * ptr->number_of_hosts);
   memset(cursor_key_exec, 0, sizeof(char) * ptr->number_of_hosts);
 
-
   for (x= 0; x < number_of_keys; x++)
   {
     unsigned int server_key;
index b79fc161f1149bb9645965c6cc0658173deb9f47..47dac67e62b103cb7591b79d5edc069272e84e80 100644 (file)
@@ -76,15 +76,20 @@ memcached_return memcached_string_append(memcached_st *ptr, memcached_string_st
 {
   memcached_return rc;
 
+  WATCHPOINT;
   rc= memcached_string_check(string, length);
+  WATCHPOINT;
 
   if (rc != MEMCACHED_SUCCESS)
     return rc;
   
+  WATCHPOINT;
   assert(string->string);
   assert(string->end >= string->string && string->end <= string->string + string->current_size);
 
+  WATCHPOINT;
   memcpy(string->end, value, length);
+  WATCHPOINT;
   string->end+= length;
 
   return MEMCACHED_SUCCESS;
index 60c6211a09e86a1dc20936abb99852647f4bb6d2..7a0919fb860e1c7294cdcef7c7e40ad689ce240a 100644 (file)
@@ -641,7 +641,7 @@ void user_supplied_bug3(memcached_st *memc)
 
   /* Turn this into a help function */
   {
-    char *return_key;
+    char return_key[MEMCACHED_MAX_KEY];
     size_t return_key_length;
     char *return_value;
     size_t return_value_length;
@@ -683,7 +683,7 @@ void string_alloc_with_size_toobig(memcached_st *memc)
 {
   memcached_string_st *string;
 
-  string= memcached_string_create(memc, 1024*100000000000);
+  string= memcached_string_create(memc, UINT64_MAX);
   assert(string == NULL);
 }
 
@@ -726,7 +726,9 @@ void string_alloc_append_toobig(memcached_st *memc)
     rc= memcached_string_append(memc, string, buffer, SMALL_STRING_LEN);
     assert(rc == MEMCACHED_SUCCESS);
   }
-  rc= memcached_string_append(memc, string, buffer, 1024*100000000000);
+  WATCHPOINT;
+  rc= memcached_string_append(memc, string, buffer, UINT64_MAX);
+  WATCHPOINT;
   assert(rc == MEMCACHED_MEMORY_ALLOCATION_FAILURE);
   memcached_string_free(memc, string);
 }