Bug fix for host_reset()
[m6w6/libmemcached] / libmemcached / memcached_hosts.c
index 79e88701f63b66871b7753dea54fa84c9019ce79..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;
@@ -361,9 +360,10 @@ memcached_return memcached_server_remove(memcached_server_st *st_ptr)
 
   for (x= 0, index= 0; x < ptr->number_of_hosts; x++) 
   {
-    if (strncmp(list[x].hostname, st_ptr->hostname, MEMCACHED_MAX_HOST_LENGTH)!=0 || list[x].port != st_ptr->port) 
+    if (strncmp(list[x].hostname, st_ptr->hostname, MEMCACHED_MAX_HOST_LENGTH) != 0 || list[x].port != st_ptr->port) 
     {
-      memcpy(list+index, list+x, sizeof(memcached_server_st));
+      if (index != x)
+        memcpy(list+index, list+x, sizeof(memcached_server_st));
       index++;
     } 
   }