X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Ffetch.cc;h=8977753489a33835f73d640289869893ab16442c;hb=ea7a5dd332779c77eaef6d14eac58372cb3439e1;hp=71d5820b6c7bc6f72a95987ee665c4440dece2c9;hpb=b16fffff43d822239ce79a366ec36873b0803df9;p=awesomized%2Flibmemcached diff --git a/libmemcached/fetch.cc b/libmemcached/fetch.cc index 71d5820b..89777534 100644 --- a/libmemcached/fetch.cc +++ b/libmemcached/fetch.cc @@ -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 */