X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=libmemcached%2Ferror.cc;h=5cfb4be29f6f3c45e9699c472b8f2520b65f90cf;hb=e7855e43bbc4dd0a5e8fcbfd4888181001dcd1ec;hp=49375097db884b9555e34d6836c4fafc2a3cd296;hpb=276e5c1e7fefa8f7061270f79443a704231c819e;p=awesomized%2Flibmemcached diff --git a/libmemcached/error.cc b/libmemcached/error.cc index 49375097..5cfb4be2 100644 --- a/libmemcached/error.cc +++ b/libmemcached/error.cc @@ -99,18 +99,35 @@ static void _set(memcached_st& memc, memcached_string_t *str, memcached_return_t error->rc= rc; error->local_errno= local_errno; + const char *errmsg_ptr; + char errmsg[MAX_ERROR_LENGTH]; + errmsg[0]= 0; + errmsg_ptr= errmsg; + + if (local_errno) + { +#ifdef STRERROR_R_CHAR_P + errmsg_ptr= strerror_r(local_errno, errmsg, sizeof(errmsg)); +#else + strerror_r(local_errno, errmsg, sizeof(errmsg)); + errmsg_ptr= errmsg; +#endif + } + + 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), + errmsg_ptr, memcached_string_printf(*str), at); } else if (local_errno) { error->size= (int)snprintf(error->message, MAX_ERROR_LENGTH, "%s(%s) -> %s", memcached_strerror(&memc, rc), - strerror(local_errno), at); + errmsg_ptr, + at); } else if (str and str->size) {