summaryrefslogtreecommitdiff
path: root/net.c
diff options
context:
space:
mode:
authorJin Qing <jinq0123@163.com>2016-12-30 23:13:02 +0800
committerJin Qing <jinq0123@163.com>2016-12-30 23:13:02 +0800
commit25cd884f6b494a88bd491a8d9a50486e3f1e6751 (patch)
tree7787f0480b9a66359560728377a6cad624d531ae /net.c
parent33152ad163a21f568fb40eeeb88b79365886b4ea (diff)
Fix __redisSetErrorFromErrno() can not get error string.
snprintf() may change errno.
Diffstat (limited to 'net.c')
-rw-r--r--net.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net.c b/net.c
index 7d41209..024f645 100644
--- a/net.c
+++ b/net.c
@@ -65,12 +65,13 @@ static void redisContextCloseFd(redisContext *c) {
}
static void __redisSetErrorFromErrno(redisContext *c, int type, const char *prefix) {
+ int errorno = errno; /* snprintf() may change errno */
char buf[128] = { 0 };
size_t len = 0;
if (prefix != NULL)
len = snprintf(buf,sizeof(buf),"%s: ",prefix);
- __redis_strerror_r(errno, (char *)(buf + len), sizeof(buf) - len);
+ __redis_strerror_r(errorno, (char *)(buf + len), sizeof(buf) - len);
__redisSetError(c,type,buf);
}