fix a logic error on memcached_server_remove which will cause double free problem
[awesomized/libmemcached] / libmemcached / memcached_hosts.c
index dd137dda0f088e08b192ad6b2d993ae271c187af..34b93c6f4d3b703569d06d2f0a6d59e31a84718b 100644 (file)
@@ -295,15 +295,14 @@ memcached_return memcached_server_remove(memcached_server_st *st_ptr)
       memcpy(list+index, list+x, sizeof(memcached_server_st));
       index++;
     } 
-    else 
-    {
-      ptr->number_of_hosts--;
-    }
   }
-
+  ptr->number_of_hosts= index;
 
   if (st_ptr->address_info) 
+  {
     freeaddrinfo(st_ptr->address_info);
+    st_ptr->address_info= NULL;
+  }
   run_distribution(ptr);
 
   return MEMCACHED_SUCCESS;