Memory leak fixed.
authorBrian Aker <brian@tangent.org>
Thu, 20 Sep 2007 13:59:52 +0000 (06:59 -0700)
committerBrian Aker <brian@tangent.org>
Thu, 20 Sep 2007 13:59:52 +0000 (06:59 -0700)
lib/memcached.c
lib/memcached_connect.c
lib/memcached_get.c
tests/test.c

index 3cbac0b274fb54c6b803eef10ab3043527e39643..c636b9b4e994e938cbcca1d1cd32d4abbdda7b16 100644 (file)
@@ -32,11 +32,9 @@ void memcached_deinit(memcached_st *ptr)
   {
     for (x= 0; x < ptr->number_of_hosts; x++)
     {
-      if (ptr->hosts[x].fd > 0)
+      if (ptr->hosts[x].fd == -1)
         close(ptr->hosts[x].fd);
-
-      if (ptr->hosts[x].hostname)
-        free(ptr->hosts[x].hostname);
+      free(ptr->hosts[x].hostname);
     }
 
     free(ptr->hosts);
index 1be786e1c6149d4480fdef280ee2d115ec774285..31f8ce1629458952b832d512da10a1a2f766a577 100644 (file)
@@ -9,9 +9,11 @@ memcached_return memcached_server_add(memcached_st *ptr, char *hostname, unsigne
     hostname= "localhost"; 
 
 
-  ptr->hosts= (memcached_host_st *)realloc(ptr->hosts, sizeof(memcached_host_st) * (size_t)ptr->number_of_hosts);
+  ptr->hosts= (memcached_host_st *)realloc(ptr->hosts, sizeof(memcached_host_st) * (ptr->number_of_hosts+1));
+  memset(ptr->hosts, 0, sizeof(memcached_host_st) * (size_t)ptr->number_of_hosts);
   ptr->hosts[ptr->number_of_hosts].hostname=
-    (char *)malloc(sizeof(char) * strlen(hostname));
+    (char *)malloc(sizeof(char) * (strlen(hostname) + 1));
+  memset(ptr->hosts[ptr->number_of_hosts].hostname, 0, sizeof(char) * (strlen(hostname) + 1));
   memcpy(ptr->hosts[ptr->number_of_hosts].hostname, hostname, strlen(hostname));
   ptr->hosts[ptr->number_of_hosts].port= port;
   ptr->hosts[ptr->number_of_hosts].fd= -1;
index 2dcdcccdfd77a4143b340a4ef75a9f499f54ba7f..c688af34639684f8931d54c00e5db1b4a9c19946 100644 (file)
@@ -10,6 +10,7 @@ char *memcached_get(memcached_st *ptr, char *key, size_t key_length,
   char *string_ptr;
   unsigned int server_key;
 
+  *value_length= 0;
   *error= memcached_connect(ptr);
 
   if (*error != MEMCACHED_SUCCESS)
index 020bfc5347939d4a1c866535ea78545cad537b91..784ec9ae33793d673bcde644c7f3800e0753d1c6 100644 (file)
@@ -23,6 +23,17 @@ void allocation_test(void)
   memcached_deinit(memc);
 }
 
+void connection_test(void)
+{
+  memcached_return rc;
+  memcached_st *memc;
+  memc= memcached_init(NULL);
+  rc= memcached_server_add(memc, "localhost", 0);
+  assert(rc == MEMCACHED_SUCCESS);
+  assert(memc);
+  memcached_deinit(memc);
+}
+
 void set_test(void)
 {
   memcached_st *memc;
@@ -122,6 +133,8 @@ void get_test(void)
   string= memcached_get(memc, key, strlen(key),
                         &string_length, &flags, &rc);
 
+  printf("RC %u\n", rc);
+  assert(rc == MEMCACHED_NOTFOUND);
   assert(string_length ==  0);
   assert(!string);
 
@@ -228,6 +241,7 @@ int main(void)
 
   init_test();
   allocation_test();
+  connection_test();
   set_test();
   add_test();
   replace_test();