Finally tracked down the oddball valgrind warning that I could never figure
authorBrian Aker <brian@tangent.org>
Thu, 18 Oct 2007 05:42:05 +0000 (22:42 -0700)
committerBrian Aker <brian@tangent.org>
Thu, 18 Oct 2007 05:42:05 +0000 (22:42 -0700)
out :)

The check for one particular safety check was wrong (though something in the
server would have to go wrong to trigger this error).

lib/memcached_get.c
tests/test.c

index baff70745e93fbfe8837023c2138608473e1930b..147b6105ca87d68d42449247b5bc25edcfff846c 100644 (file)
@@ -36,7 +36,7 @@ static char *memcached_value_fetch(memcached_st *ptr, char *key, size_t *key_len
       memset(key, 0, MEMCACHED_MAX_KEY);
       *key_length= 0;
 
-      for (; end_ptr == string_ptr || *string_ptr != ' '; string_ptr++)
+      for (; end_ptr > string_ptr && *string_ptr != ' '; string_ptr++)
       {
         *key= *string_ptr;
         key++;
@@ -44,7 +44,7 @@ static char *memcached_value_fetch(memcached_st *ptr, char *key, size_t *key_len
       }
     }
     else /* Skip characters */
-      for (; end_ptr == string_ptr || *string_ptr != ' '; string_ptr++);
+      for (; end_ptr > string_ptr && *string_ptr != ' '; string_ptr++);
 
     if (end_ptr == string_ptr)
         goto read_error;
@@ -53,7 +53,7 @@ static char *memcached_value_fetch(memcached_st *ptr, char *key, size_t *key_len
     string_ptr++;
     if (end_ptr == string_ptr)
         goto read_error;
-    for (next_ptr= string_ptr; end_ptr == string_ptr || *string_ptr != ' '; string_ptr++);
+    for (next_ptr= string_ptr; end_ptr > string_ptr && *string_ptr != ' '; string_ptr++);
     *flags= (uint16_t)strtol(next_ptr, &string_ptr, 10);
 
     if (end_ptr == string_ptr)
@@ -64,7 +64,7 @@ static char *memcached_value_fetch(memcached_st *ptr, char *key, size_t *key_len
     if (end_ptr == string_ptr)
         goto read_error;
 
-    for (next_ptr= string_ptr; end_ptr == string_ptr || *string_ptr != ' '; string_ptr++);
+    for (next_ptr= string_ptr; end_ptr > string_ptr && *string_ptr != ' '; string_ptr++);
     *value_length= (size_t)strtoll(next_ptr, &string_ptr, 10);
 
     if (end_ptr == string_ptr)
index 0bdf760a8884bcf3dc9814c30e9e2be6ba9affa0..56f66d9479a3fcabe467f3d846f4a18921658dc7 100644 (file)
@@ -513,13 +513,14 @@ void user_supplied_bug1(memcached_st *memc)
 
   unsigned long long total= 0;
   int size= 0;
-  srand(time(NULL));
   char key[10];
   char randomstuff[6 * 1024]; 
   memcached_return rc;
 
   memset(randomstuff, 0, 6 * 1024);
 
+  /* We just keep looking at the same values over and over */
+  srandom(10);
 
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, &setter);
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, &setter);
@@ -557,7 +558,6 @@ void user_supplied_bug2(memcached_st *memc)
   unsigned int x;
   unsigned long long total;
 
-
   setter= 1;
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, &setter);
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, &setter);