Fixed strings returned by get to be null terminated (request by Cal
authorBrian Aker <brian@tangent.org>
Thu, 11 Oct 2007 21:55:37 +0000 (14:55 -0700)
committerBrian Aker <brian@tangent.org>
Thu, 11 Oct 2007 21:55:37 +0000 (14:55 -0700)
Heldenbrand)

ChangeLog
lib/memcached_get.c

index 58ba040224a0a10558b84937a17fda63c4ecfd52..eb5ebc9ee7e429e7c252496136f53954b9ab58bd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+0.6
+  * get value returns are now null terminated (request by Cal Heldenbrand) 
+
 0.5 Tue Oct  9 00:22:25 PDT 2007
  * Ruby maintainer mentioned TCP_NODELAY patch he had added. Added this to C
    library as well. (Eric Hodel drbrain@segment7.net)
index c7c21d1ee43ad7518700d1c6f026ca1323dcd62a..4894b2a05ef32334a9f26029057412ee5ac2dda7 100644 (file)
@@ -96,6 +96,13 @@ static char *memcached_value_fetch(memcached_st *ptr, char *key, size_t *key_len
 
       value_ptr= value;
       read_length= 0;
+      /* 
+        We read the \r\n into the string since not doing so is more 
+        cycles then the waster of memory to do so.
+
+        We are null terminating through, which will most likely make
+        some people lazy about using the return length.
+      */
       to_read= (*value_length) + 2;
 
       read_length= memcached_io_read(ptr, server_key,
@@ -107,6 +114,9 @@ static char *memcached_value_fetch(memcached_st *ptr, char *key, size_t *key_len
         goto read_error;
       }
 
+      value[*value_length]= 0;
+      value[(*value_length) + 1]= 0;
+
       return value;
     }
   }