{
#ifdef STRERROR_R_CHAR_P
errmsg_ptr= strerror_r(local_errno, errmsg, sizeof(errmsg));
-#else
+#elif defined(HAVE_STRERROR_R) && HAVE_STRERROR_R
strerror_r(local_errno, errmsg, sizeof(errmsg));
errmsg_ptr= errmsg;
+#elif defined(HAVE_STRERROR) && HAVE_STRERROR
+ snprintf(errmsg, sizeof(errmsg), "%s", strerror(local_errno));
+ errmsg_ptr= errmsg;
#endif
}
return memcached_set_error(self, rc, at, tmp);
}
+#ifndef __INTEL_COMPILER
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+#endif
+
memcached_return_t memcached_set_error(memcached_st& memc, memcached_return_t rc, const char *at, memcached_string_t& str)
{
assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client");
{
assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client");
assert_msg(rc != MEMCACHED_SOME_ERRORS, "Programmer error, MEMCACHED_SOME_ERRORS was about to be set on a org::libmemcached::Instance");
- if (memcached_fatal(rc) == false)
+ if (memcached_fatal(rc) == false and rc != MEMCACHED_CLIENT_ERROR)
{
return rc;
}
memcached_string_t error_host= { hostname_port_message, size_t(size) };
- assert(self.root);
+ assert_msg(self.root, "Programmer error, root was not set on instance");
if (self.root == NULL)
{
return rc;
_set(self, (*self.root));
assert(self.root->error_messages);
assert(self.error_messages);
+ assert(self.error_messages->rc == self.root->error_messages->rc);
return rc;
}
return rc;
}
- char hostname_port[NI_MAXHOST +NI_MAXSERV + sizeof("host : ")];
+ char hostname_port[MEMCACHED_NI_MAXHOST +MEMCACHED_NI_MAXSERV + sizeof("host : ")];
size_t size= append_host_to_string(self, hostname_port, sizeof(hostname_port));
memcached_string_t error_host= { hostname_port, size};
_set(*self.root, &error_host, rc, at, local_errno);
_set(self, (*self.root));
+#if 0
+ if (self.root->error_messages->rc != self.error_messages->rc)
+ {
+ fprintf(stderr, "%s:%d %s != %s\n", __FILE__, __LINE__,
+ memcached_strerror(NULL, self.root->error_messages->rc),
+ memcached_strerror(NULL, self.error_messages->rc));
+ }
+#endif
+
return rc;
}