diff --git a/hiredis.c b/hiredis.c index 3f08129..503fe15 100644 --- a/hiredis.c +++ b/hiredis.c @@ -614,10 +614,10 @@ int redisFormatCommandArgv(char **target, int argc, const char **argv, const siz return totlen; } -void __redisSetError(redisContext *c, int type, const char *str) { +void __redisSetError(redisContext *c, int type, const sds errstr) { c->err = type; - if (str) { - c->errstr = sdsnew(str); + if (errstr != NULL) { + c->errstr = errstr; } else { /* Only REDIS_ERR_IO may lack a description! */ assert(type == REDIS_ERR_IO); @@ -700,7 +700,7 @@ int redisBufferRead(redisContext *c) { } } else if (nread == 0) { __redisSetError(c,REDIS_ERR_EOF, - "Server closed the connection"); + sdsnew("Server closed the connection")); return REDIS_ERR; } else { __redisCreateReplyReader(c); @@ -747,7 +747,8 @@ int redisBufferWrite(redisContext *c, int *done) { static int __redisGetReply(redisContext *c, void **reply) { __redisCreateReplyReader(c); if (redisReplyReaderGetReply(c->reader,reply) == REDIS_ERR) { - __redisSetError(c,REDIS_ERR_PROTOCOL,((redisReader*)c->reader)->error); + __redisSetError(c,REDIS_ERR_PROTOCOL, + sdsnew(((redisReader*)c->reader)->error)); return REDIS_ERR; } return REDIS_OK; diff --git a/net.c b/net.c index ebb3c2d..f0f57eb 100644 --- a/net.c +++ b/net.c @@ -46,7 +46,7 @@ #include "sds.h" /* Forward declaration */ -void __redisSetError(redisContext *c, int type, const char *err); +void __redisSetError(redisContext *c, int type, sds err); static int redisSetNonBlock(redisContext *c, int fd) { int flags;