summaryrefslogtreecommitdiff
path: root/libmemcached/response.cc
diff options
context:
space:
mode:
authorBrian Aker <brian@tangent.org>2011-12-22 00:34:24 -0800
committerBrian Aker <brian@tangent.org>2011-12-22 00:34:24 -0800
commit2be01b67cdfd2cda7f623492650898896f57e978 (patch)
tree90d0dbd59ce9e0ea5b0c728c3d66c8ceaf61f6bb /libmemcached/response.cc
parente978a2d4f1880157358f710e042863dd3ad6e9a3 (diff)
downloadlibmemcached-2be01b67cdfd2cda7f623492650898896f57e978.tar.gz
Convert stats to vector.
Diffstat (limited to 'libmemcached/response.cc')
-rw-r--r--libmemcached/response.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/libmemcached/response.cc b/libmemcached/response.cc
index 061f7401..775102fa 100644
--- a/libmemcached/response.cc
+++ b/libmemcached/response.cc
@@ -184,7 +184,9 @@ static memcached_return_t textual_value_fetch(memcached_server_write_instance_st
value_length= (size_t)strtoull(next_ptr, &string_ptr, 10);
if (end_ptr == string_ptr)
+ {
goto read_error;
+ }
/* Skip spaces */
if (*string_ptr == '\r')
@@ -388,13 +390,19 @@ static memcached_return_t textual_read_one_response(memcached_server_write_insta
default:
{
- unsigned long long auto_return_value;
+ unsigned long long int auto_return_value= strtoull(buffer, (char **)NULL, 10);
- if (sscanf(buffer, "%llu", &auto_return_value) == 1)
- return MEMCACHED_SUCCESS;
+ if (auto_return_value == ULLONG_MAX and errno == ERANGE)
+ {
+ return MEMCACHED_UNKNOWN_READ_FAILURE;
+ }
+ else if (errno == EINVAL)
+ {
+ return MEMCACHED_UNKNOWN_READ_FAILURE;
+ }
WATCHPOINT_STRING(buffer);
- return MEMCACHED_UNKNOWN_READ_FAILURE;
+ return MEMCACHED_SUCCESS;
}
}