X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Farray.c;h=5f9066ce9fd689254556f7e234288e04695ed1bb;hb=633c18d8302c3f0fda715879716a1a6cb2e21080;hp=2412369e2a4199d81815d5d04cad496b4602ddcd;hpb=de46e62fe493ce152e1804feec0d19d5d0cfaa9f;p=m6w6%2Flibmemcached diff --git a/libmemcached/array.c b/libmemcached/array.c index 2412369e..5f9066ce 100644 --- a/libmemcached/array.c +++ b/libmemcached/array.c @@ -35,40 +35,62 @@ * */ -#include "libmemcached/common.h" +#include +#include +#include struct memcached_array_st { - memcached_st *root; + struct memcached_st *root; size_t size; char c_str[]; }; -memcached_array_st *memcached_array_clone(memcached_st *memc, const memcached_array_st *original) + +memcached_array_st *memcached_array_clone(struct memcached_st *memc, const memcached_array_st *original) { - if (! original) - return NULL; + if (original) + { + return memcached_strcpy(memc, original->c_str, original->size); + } - return memcached_strcpy(memc, original->c_str, original->size); + return NULL; } -memcached_array_st *memcached_strcpy(memcached_st *memc, const char *str, size_t str_length) +memcached_array_st *memcached_strcpy(struct memcached_st *memc, const char *str, size_t str_length) { - memcached_array_st *array= (struct memcached_array_st *)libmemcached_malloc(memc, sizeof(struct memcached_array_st) +str_length +1); + assert(memc); + assert(str); + assert(str_length); - if (! array) - return NULL; + memcached_array_st *array= (struct memcached_array_st *)libmemcached_malloc(memc, sizeof(struct memcached_array_st) +str_length +1); - array->root= memc; - array->size= str_length -1; // We don't count the NULL ending - memcpy(array->c_str, str, str_length); - array->c_str[str_length]= 0; + if (array) + { + array->root= memc; + array->size= str_length; // We don't count the NULL ending + memcpy(array->c_str, str, str_length); + array->c_str[str_length]= 0; + } return array; } +bool memcached_array_is_null(memcached_array_st *array) +{ + if (array) + { + return false; + } + + return true; +} + memcached_string_t memcached_array_to_string(memcached_array_st *array) { + assert(array); + assert(array->c_str); + assert(array->size); memcached_string_t tmp; tmp.c_str= array->c_str; tmp.size= array->size; @@ -78,32 +100,29 @@ memcached_string_t memcached_array_to_string(memcached_array_st *array) void memcached_array_free(memcached_array_st *array) { - if (! array) - return; - - WATCHPOINT_ASSERT(array->root); - if (array && array->root) + if (array) { + WATCHPOINT_ASSERT(array->root); libmemcached_free(array->root, array); } - else if (array) - { - free(array); - } } size_t memcached_array_size(memcached_array_st *array) { - if (! array) - return 0; + if (array) + { + return array->size; + } - return array->size; + return 0; } const char *memcached_array_string(memcached_array_st *array) { - if (! array) - return NULL; + if (array) + { + return array->c_str; + } - return array->c_str; + return NULL; }