Extend lp:655423 just to see if we can trigger it via any other method.
[awesomized/libmemcached] / libmemcached / fetch.cc
index 71d5820b6c7bc6f72a95987ee665c4440dece2c9..8977753489a33835f73d640289869893ab16442c 100644 (file)
@@ -56,7 +56,7 @@ char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length,
 
   result_buffer= memcached_fetch_result(ptr, result_buffer, error);
 
-  if (result_buffer == NULL || *error != MEMCACHED_SUCCESS)
+  if (result_buffer == NULL or *error != MEMCACHED_SUCCESS)
   {
     WATCHPOINT_ASSERT(result_buffer == NULL);
     *value_length= 0;
@@ -78,7 +78,8 @@ char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length,
     *key_length= result_buffer->key_length;
   }
 
-  *flags= result_buffer->item_flags;
+  if (flags)
+    *flags= result_buffer->item_flags;
 
   return memcached_string_c_copy(&result_buffer->value);
 }
@@ -89,27 +90,41 @@ memcached_result_st *memcached_fetch_result(memcached_st *ptr,
 {
   memcached_server_st *server;
 
-  unlikely (ptr->flags.use_udp)
+  memcached_return_t unused;
+  if (not error)
+    error= &unused;
+
+  if (ptr->flags.use_udp)
   {
     *error= MEMCACHED_NOT_SUPPORTED;
     return NULL;
   }
 
-  if (result == NULL)
-    if ((result= memcached_result_create(ptr, NULL)) == NULL)
+  if (not result)
+  {
+    if (not (result= memcached_result_create(ptr, NULL)))
+    {
       return NULL;
+    }
+  }
 
-  while ((server= memcached_io_get_readable_server(ptr)) != NULL) 
+  while ((server= memcached_io_get_readable_server(ptr)))
   {
     char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
     *error= memcached_response(server, buffer, sizeof(buffer), result);
 
     if (*error == MEMCACHED_SUCCESS)
+    {
       return result;
+    }
     else if (*error == MEMCACHED_END)
+    {
       memcached_server_response_reset(server);
+    }
     else if (*error != MEMCACHED_NOTFOUND)
+    {
       break;
+    }
   }
 
   /* We have completed reading data */