X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Ferror.cc;h=16608ff9eeb8b473cc9581e539c9fc553c6bae24;hb=517d9f55399cbd61963e5cb9da6e733e6381b254;hp=7914a165e9c8617cc57ba97c60c92d7697ceb223;hpb=f8fd4b41acd1abf63eb305170638fa397afe06fa;p=awesomized%2Flibmemcached diff --git a/libmemcached/error.cc b/libmemcached/error.cc index 7914a165..16608ff9 100644 --- a/libmemcached/error.cc +++ b/libmemcached/error.cc @@ -36,6 +36,7 @@ */ #include +#include #define MAX_ERROR_LENGTH 2048 struct memcached_error_t @@ -89,12 +90,12 @@ static void _set(memcached_st& memc, memcached_string_t *str, memcached_return_t error->rc= rc; error->local_errno= local_errno; - if (str and local_errno) + if (str and str->size and local_errno) { error->size= (int)snprintf(error->message, MAX_ERROR_LENGTH, "%s(%s), %.*s -> %s", memcached_strerror(&memc, rc), strerror(local_errno), - int(error->size), str->c_str, at); + memcached_string_printf(*str), at); } else if (local_errno) { @@ -102,11 +103,11 @@ static void _set(memcached_st& memc, memcached_string_t *str, memcached_return_t memcached_strerror(&memc, rc), strerror(local_errno), at); } - else if (str) + else if (str and str->size) { error->size= (int)snprintf(error->message, MAX_ERROR_LENGTH, "%s, %.*s -> %s", memcached_strerror(&memc, rc), - int(error->size), str->c_str, at); + int(str->size), str->c_str, at); } else { @@ -120,18 +121,21 @@ static void _set(memcached_st& memc, memcached_string_t *str, memcached_return_t memcached_return_t memcached_set_error(memcached_st& memc, memcached_return_t rc, const char *at, const char *str, size_t length) { + assert(rc != MEMCACHED_ERRNO); memcached_string_t tmp= { str, length }; return memcached_set_error(memc, rc, at, tmp); } memcached_return_t memcached_set_error(memcached_server_st& self, memcached_return_t rc, const char *at, const char *str, size_t length) { + assert(rc != MEMCACHED_ERRNO); memcached_string_t tmp= { str, length }; return memcached_set_error(self, rc, at, tmp); } memcached_return_t memcached_set_error(memcached_st& memc, memcached_return_t rc, const char *at, memcached_string_t& str) { + assert(rc != MEMCACHED_ERRNO); if (memcached_success(rc)) return MEMCACHED_SUCCESS; @@ -142,6 +146,7 @@ memcached_return_t memcached_set_error(memcached_st& memc, memcached_return_t rc memcached_return_t memcached_set_error(memcached_server_st& self, memcached_return_t rc, const char *at, memcached_string_t& str) { + assert(rc != MEMCACHED_ERRNO); if (memcached_success(rc)) return MEMCACHED_SUCCESS; @@ -171,6 +176,7 @@ memcached_return_t memcached_set_error(memcached_server_st& self, memcached_retu memcached_return_t memcached_set_error(memcached_server_st& self, memcached_return_t rc, const char *at) { + assert(rc != MEMCACHED_ERRNO); if (memcached_success(rc)) return MEMCACHED_SUCCESS; @@ -189,6 +195,7 @@ memcached_return_t memcached_set_error(memcached_server_st& self, memcached_retu memcached_return_t memcached_set_error(memcached_st& self, memcached_return_t rc, const char *at) { + assert(rc != MEMCACHED_ERRNO); if (memcached_success(rc)) return MEMCACHED_SUCCESS;