X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_response.c;h=076b0a6fc2bd67a49c3d5d22e50f9405102c0553;hb=82a0e8be2e1002c6f173baf7c2dfdbb281ee2136;hp=d0962a2d759e27b27839181d14251f81f02a89e8;hpb=7ef83f5c1f71a8527a5f3001d72772ac692bcf14;p=m6w6%2Flibmemcached diff --git a/lib/memcached_response.c b/lib/memcached_response.c index d0962a2d..076b0a6f 100644 --- a/lib/memcached_response.c +++ b/lib/memcached_response.c @@ -18,7 +18,6 @@ memcached_return memcached_response(memcached_st *ptr, unsigned int max_messages; - memset(buffer, 0, buffer_length); send_length= 0; max_messages= memcached_server_response_count(ptr, server_key); @@ -43,8 +42,13 @@ memcached_return memcached_response(memcached_st *ptr, buffer_ptr++; total_length++; - assert(total_length < buffer_length); + WATCHPOINT_ASSERT(total_length < buffer_length); + + if (total_length >= buffer_length) + return MEMCACHED_PROTOCOL_ERROR; } + buffer_ptr++; + *buffer_ptr= 0; if (memcached_server_response_count(ptr, server_key)) memcached_server_response_decrement(ptr, server_key); @@ -52,7 +56,7 @@ memcached_return memcached_response(memcached_st *ptr, switch(buffer[0]) { - case 'V': /* VALUE */ + case 'V': /* VALUE || VERSION */ return MEMCACHED_SUCCESS; case 'O': /* OK */ return MEMCACHED_SUCCESS; @@ -96,3 +100,15 @@ memcached_return memcached_response(memcached_st *ptr, return MEMCACHED_SUCCESS; } + +char *memcached_result_value(memcached_result_st *ptr) +{ + memcached_string_st *sptr= &ptr->value; + return memcached_string_value(sptr); +} + +size_t memcached_result_length(memcached_result_st *ptr) +{ + memcached_string_st *sptr= &ptr->value; + return memcached_string_length(sptr); +}