Drop __redis_strerror_r
Since _GNU_SOURCE is now guaranteed to be unset, it is no longer necessary to support the GNU-specific version of strerror_r. Drop __redis_strerror_r from the header, and call strerror_r directly. This breaks any external users of this macro, but they shouldn't have been using it in the first place. Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
This commit is contained in:
parent
49bbaacc79
commit
d1c1b668c1
@ -581,7 +581,7 @@ void __redisSetError(redisContext *c, int type, const char *str) {
|
|||||||
} else {
|
} else {
|
||||||
/* Only REDIS_ERR_IO may lack a description! */
|
/* Only REDIS_ERR_IO may lack a description! */
|
||||||
assert(type == REDIS_ERR_IO);
|
assert(type == REDIS_ERR_IO);
|
||||||
__redis_strerror_r(errno, c->errstr, sizeof(c->errstr));
|
strerror_r(errno, c->errstr, sizeof(c->errstr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
hiredis.h
24
hiredis.h
@ -80,30 +80,6 @@
|
|||||||
* SO_REUSEADDR is being used. */
|
* SO_REUSEADDR is being used. */
|
||||||
#define REDIS_CONNECT_RETRIES 10
|
#define REDIS_CONNECT_RETRIES 10
|
||||||
|
|
||||||
/* strerror_r has two completely different prototypes and behaviors
|
|
||||||
* depending on system issues, so we need to operate on the error buffer
|
|
||||||
* differently depending on which strerror_r we're using. */
|
|
||||||
#ifndef _GNU_SOURCE
|
|
||||||
/* "regular" POSIX strerror_r that does the right thing. */
|
|
||||||
#define __redis_strerror_r(errno, buf, len) \
|
|
||||||
do { \
|
|
||||||
strerror_r((errno), (buf), (len)); \
|
|
||||||
} while (0)
|
|
||||||
#else
|
|
||||||
/* "bad" GNU strerror_r we need to clean up after. */
|
|
||||||
#define __redis_strerror_r(errno, buf, len) \
|
|
||||||
do { \
|
|
||||||
char *err_str = strerror_r((errno), (buf), (len)); \
|
|
||||||
/* If return value _isn't_ the start of the buffer we passed in, \
|
|
||||||
* then GNU strerror_r returned an internal static buffer and we \
|
|
||||||
* need to copy the result into our private buffer. */ \
|
|
||||||
if (err_str != (buf)) { \
|
|
||||||
strncpy((buf), err_str, ((len) - 1)); \
|
|
||||||
(buf)[(len)-1] = '\0'; \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
2
net.c
2
net.c
@ -71,7 +71,7 @@ static void __redisSetErrorFromErrno(redisContext *c, int type, const char *pref
|
|||||||
|
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
len = snprintf(buf,sizeof(buf),"%s: ",prefix);
|
len = snprintf(buf,sizeof(buf),"%s: ",prefix);
|
||||||
__redis_strerror_r(errorno, (char *)(buf + len), sizeof(buf) - len);
|
strerror_r(errorno, (char *)(buf + len), sizeof(buf) - len);
|
||||||
__redisSetError(c,type,buf);
|
__redisSetError(c,type,buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user