Bug fix for host_reset()
author <brian@gir.tangent.org> <>
Mon, 5 Jan 2009 18:02:01 +0000 (10:02 -0800)
committer <brian@gir.tangent.org> <>
Mon, 5 Jan 2009 18:02:01 +0000 (10:02 -0800)
ChangeLog
libmemcached/memcached_hosts.c
libmemcached/memcached_server.c
tests/function.c

index c61a7a2cd477a5e3f8c4f4ab2817d488a1d97466..8ff99b09c067536e2542ef487bdd794b2d975b90 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 0.26
   * Fix for decrement on hash key
+  * Fixed assert that was catching bad memset() call in host_reset()
 
 0.25 Fri Nov 28 09:59:35 PST 2008
   * Jenkins HASH added.
index 34bbf68941b055253c8101680e95c74c9f2c30c7..df384a9c56911958a8fad6afe709892a08b9a8b6 100644 (file)
@@ -58,7 +58,6 @@ void host_reset(memcached_st *ptr, memcached_server_st *host,
                 const char *hostname, unsigned int port, uint32_t weight,
                 memcached_connection type)
 {
-  memset(host,  0, sizeof(memcached_server_st));
   strncpy(host->hostname, hostname, MEMCACHED_MAX_HOST_LENGTH - 1);
   host->root= ptr ? ptr : NULL;
   host->port= port;
index c836cfa297f9de48b241d5f1e5d91a7f763e1d64..dfb187976158c75b0ac7a0788111006c68292f2a 100644 (file)
@@ -17,6 +17,7 @@ memcached_server_st *memcached_server_create(memcached_st *memc, memcached_serve
   }
   else
   {
+    ptr->is_allocated= MEMCACHED_USED;
     memset(ptr, 0, sizeof(memcached_server_st));
   }
   
@@ -27,7 +28,7 @@ memcached_server_st *memcached_server_create(memcached_st *memc, memcached_serve
 
 void memcached_server_free(memcached_server_st *ptr)
 {
-  memcached_return rc;
+  WATCHPOINT_NUMBER(ptr->port);
   WATCHPOINT_ASSERT(ptr->is_allocated != MEMCACHED_NOT_ALLOCATED);
 
   memcached_quit_server(ptr, 0);
@@ -45,8 +46,6 @@ void memcached_server_free(memcached_server_st *ptr)
     else
       free(ptr);
   }
-  else
-    ptr->is_allocated= MEMCACHED_USED;
 }
 
 /*
index f06c278606f88e84bacdc8938189852c24b2293f..3eab8fea21696291d36ad881ba2e07ede26e3c08 100644 (file)
@@ -2126,6 +2126,28 @@ static test_return  user_supplied_bug17(memcached_st *memc)
     return 0;
 }
 
+/*
+  From Andrei on IRC
+*/
+
+test_return user_supplied_bug19(memcached_st *memc)
+{
+  memcached_st *m;
+  memcached_server_st *s;
+  memcached_return res;
+
+  (void)memc;
+
+  m= memcached_create(NULL);
+  memcached_server_add_with_weight(m, "localhost", 11311, 100);
+  memcached_server_add_with_weight(m, "localhost", 11312, 100);
+
+  s= memcached_server_by_key(m, "a", 1, &res);
+  memcached_server_free(s);
+
+  memcached_free(m);
+}
+
 #include "ketama_test_cases.h"
 test_return user_supplied_bug18(memcached_st *memc)
 {
@@ -3000,6 +3022,7 @@ test_st user_tests[] ={
   {"user_supplied_bug16", 1, user_supplied_bug16 },
   {"user_supplied_bug17", 1, user_supplied_bug17 },
 //  {"user_supplied_bug18", 1, user_supplied_bug18 },
+  {"user_supplied_bug19", 1, user_supplied_bug19 },
   {0, 0, 0}
 };