X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached.c;h=a1999d62dbc78aba69c990c5e2fd50cf23d2c514;hb=0ef2080bdbaafe7e3397530ac69ef4081f4f513e;hp=3715f6ebbdd3bb840ef6594ad4ee810a50554b12;hpb=b048aacba5d279f3271163cfaa0704684beca1e2;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached.c b/libmemcached/memcached.c index 3715f6eb..a1999d62 100644 --- a/libmemcached/memcached.c +++ b/libmemcached/memcached.c @@ -87,6 +87,7 @@ static inline bool _memcached_init(memcached_st *self) self->snd_timeout= 0; self->rcv_timeout= 0; self->server_failure_limit= 0; + self->query_id= 0; /* TODO, Document why we picked these defaults */ self->io_msg_watermark= 500; @@ -120,6 +121,8 @@ static inline bool _memcached_init(memcached_st *self) self->error_messages= NULL; self->prefix_key= NULL; + self->configure.initial_pool_size= 1; + self->configure.max_pool_size= 1; self->configure.filename= NULL; return true; @@ -209,21 +212,35 @@ memcached_st *memcached_create(memcached_st *ptr) memcached_st *memcached_create_with_options(const char *string, size_t length) { - memcached_st *self= memcached_create(NULL); + if (! length || ! string) + { + errno= EINVAL; + return NULL; + } + memcached_st *self= memcached_create(NULL); if (! self) + { + errno= ENOMEM; return NULL; + } memcached_return_t rc; - if ((rc= memcached_parse_configuration(self, string, length)) != MEMCACHED_SUCCESS) - { - return self; - } + rc= memcached_parse_configuration(self, string, length); - if (memcached_parse_filename(self)) + if (rc == MEMCACHED_SUCCESS && memcached_parse_filename(self)) { rc= memcached_parse_configure_file(self, memcached_parse_filename(self), memcached_parse_filename_length(self)); } + + if (rc != MEMCACHED_SUCCESS) + { + memcached_free(self); + errno= EINVAL; + return NULL; + } + + errno= 0; return self; } @@ -251,6 +268,9 @@ memcached_return_t memcached_reset(memcached_st *ptr) void memcached_servers_reset(memcached_st *ptr) { + if (! ptr) + return; + memcached_server_list_free(memcached_server_list(ptr)); memcached_server_list_set(ptr, NULL); @@ -265,6 +285,9 @@ void memcached_servers_reset(memcached_st *ptr) void memcached_reset_last_disconnected_server(memcached_st *ptr) { + if (! ptr) + return; + if (ptr->last_disconnected_server) { memcached_server_free(ptr->last_disconnected_server); @@ -274,6 +297,9 @@ void memcached_reset_last_disconnected_server(memcached_st *ptr) void memcached_free(memcached_st *ptr) { + if (! ptr) + return; + _free(ptr, true); }