gitignore [ci skip]
[awesomized/libmemcached] / libmemcached / string.cc
index 1c44e996d680e46e7143463fe51b15aa09e7cf93..b821aca61edcb1de951774d4a81b2ca1f75b19e5 100644 (file)
@@ -79,7 +79,7 @@ static inline void _init_string(memcached_string_st *self)
   self->end= self->string= NULL;
 }
 
-memcached_string_st *memcached_string_create(memcached_st *memc, memcached_string_st *self, size_t initial_size)
+memcached_string_st *memcached_string_create(Memcached *memc, memcached_string_st *self, size_t initial_size)
 {
   WATCHPOINT_ASSERT(memc);
 
@@ -115,7 +115,7 @@ memcached_string_st *memcached_string_create(memcached_st *memc, memcached_strin
     return NULL;
   }
 
-  self->options.is_initialized= true;
+  memcached_set_initialized(self, true);
 
   WATCHPOINT_ASSERT(self->string == self->end);
 
@@ -279,17 +279,24 @@ const char *memcached_string_value(const memcached_string_st& self)
 
 char *memcached_string_take_value(memcached_string_st *self)
 {
+  char* value= NULL;
+
   assert_msg(self, "Invalid memcached_string_st");
-  // If we fail at adding the null, we copy and move on
-  if (memcached_success(memcached_string_append_null(self)))
+  if (self)
   {
-    return memcached_string_c_copy(self);
+    if (memcached_string_length(self))
+    {
+      // If we fail at adding the null, we copy and move on
+      if (memcached_failed(memcached_string_append_null(self)))
+      {
+        return NULL;
+      }
+
+      value= self->string;
+      _init_string(self);
+    }
   }
 
-  char *value= self->string;
-
-  _init_string(self);
-
   return value;
 }