X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fresult.cc;h=c3e0b452cb39d0c6291ed0292985d7676d58b176;hb=1adc67d1609fd71308b822e153dcb08ad7fbf9c2;hp=eb24fa3617c4f35889851be7e154f64d0e60dbe7;hpb=b551d4aedecbd485277f9cc63bd33d860060194c;p=awesomized%2Flibmemcached diff --git a/libmemcached/result.cc b/libmemcached/result.cc index eb24fa36..c3e0b452 100644 --- a/libmemcached/result.cc +++ b/libmemcached/result.cc @@ -52,6 +52,8 @@ static inline void _result_init(memcached_result_st *self, self->key_length= 0; self->item_cas= 0; self->root= memc; + self->numeric_value= UINT64_MAX; + self->count= 0; self->item_key[0]= 0; } @@ -67,7 +69,7 @@ memcached_result_st *memcached_result_create(const memcached_st *memc, } else { - ptr= static_cast(libmemcached_malloc(memc, sizeof(memcached_result_st))); + ptr= libmemcached_xmalloc(memc, memcached_result_st); if (not ptr) { @@ -96,14 +98,18 @@ void memcached_result_reset(memcached_result_st *ptr) ptr->item_flags= 0; ptr->item_cas= 0; ptr->item_expiration= 0; + ptr->numeric_value= UINT64_MAX; } void memcached_result_free(memcached_result_st *ptr) { - if (not ptr) + if (ptr == NULL) + { return; + } memcached_string_free(&ptr->value); + ptr->numeric_value= UINT64_MAX; if (memcached_is_allocated(ptr)) { @@ -112,10 +118,16 @@ void memcached_result_free(memcached_result_st *ptr) } else { + ptr->count= 0; ptr->options.is_initialized= false; } } +void memcached_result_reset_value(memcached_result_st *ptr) +{ + memcached_string_reset(&ptr->value); +} + memcached_return_t memcached_result_set_value(memcached_result_st *ptr, const char *value, size_t length) @@ -150,6 +162,12 @@ size_t memcached_result_length(const memcached_result_st *self) return memcached_string_length(sptr); } +char *memcached_result_take_value(memcached_result_st *self) +{ + memcached_string_st *sptr= &self->value; + return memcached_string_take_value(sptr); +} + uint32_t memcached_result_flags(const memcached_result_st *self) { return self->item_flags;