Merge pull request #72 from chipdude/master
Fix self-test of connect error on Linux; merge duplicated string (DRY)
This commit is contained in:
commit
d5d884378d
11
hiredis.c
11
hiredis.c
@ -749,6 +749,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
|
|||||||
default:
|
default:
|
||||||
/* Try to detect printf format */
|
/* Try to detect printf format */
|
||||||
{
|
{
|
||||||
|
static const char intfmts[] = "diouxX";
|
||||||
char _format[16];
|
char _format[16];
|
||||||
const char *_p = c+1;
|
const char *_p = c+1;
|
||||||
size_t _l = 0;
|
size_t _l = 0;
|
||||||
@ -774,7 +775,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
|
|||||||
va_copy(_cpy,ap);
|
va_copy(_cpy,ap);
|
||||||
|
|
||||||
/* Integer conversion (without modifiers) */
|
/* Integer conversion (without modifiers) */
|
||||||
if (strchr("diouxX",*_p) != NULL) {
|
if (strchr(intfmts,*_p) != NULL) {
|
||||||
va_arg(ap,int);
|
va_arg(ap,int);
|
||||||
goto fmt_valid;
|
goto fmt_valid;
|
||||||
}
|
}
|
||||||
@ -788,7 +789,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
|
|||||||
/* Size: char */
|
/* Size: char */
|
||||||
if (_p[0] == 'h' && _p[1] == 'h') {
|
if (_p[0] == 'h' && _p[1] == 'h') {
|
||||||
_p += 2;
|
_p += 2;
|
||||||
if (*_p != '\0' && strchr("diouxX",*_p) != NULL) {
|
if (*_p != '\0' && strchr(intfmts,*_p) != NULL) {
|
||||||
va_arg(ap,int); /* char gets promoted to int */
|
va_arg(ap,int); /* char gets promoted to int */
|
||||||
goto fmt_valid;
|
goto fmt_valid;
|
||||||
}
|
}
|
||||||
@ -798,7 +799,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
|
|||||||
/* Size: short */
|
/* Size: short */
|
||||||
if (_p[0] == 'h') {
|
if (_p[0] == 'h') {
|
||||||
_p += 1;
|
_p += 1;
|
||||||
if (*_p != '\0' && strchr("diouxX",*_p) != NULL) {
|
if (*_p != '\0' && strchr(intfmts,*_p) != NULL) {
|
||||||
va_arg(ap,int); /* short gets promoted to int */
|
va_arg(ap,int); /* short gets promoted to int */
|
||||||
goto fmt_valid;
|
goto fmt_valid;
|
||||||
}
|
}
|
||||||
@ -808,7 +809,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
|
|||||||
/* Size: long long */
|
/* Size: long long */
|
||||||
if (_p[0] == 'l' && _p[1] == 'l') {
|
if (_p[0] == 'l' && _p[1] == 'l') {
|
||||||
_p += 2;
|
_p += 2;
|
||||||
if (*_p != '\0' && strchr("diouxX",*_p) != NULL) {
|
if (*_p != '\0' && strchr(intfmts,*_p) != NULL) {
|
||||||
va_arg(ap,long long);
|
va_arg(ap,long long);
|
||||||
goto fmt_valid;
|
goto fmt_valid;
|
||||||
}
|
}
|
||||||
@ -818,7 +819,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
|
|||||||
/* Size: long */
|
/* Size: long */
|
||||||
if (_p[0] == 'l') {
|
if (_p[0] == 'l') {
|
||||||
_p += 1;
|
_p += 1;
|
||||||
if (*_p != '\0' && strchr("diouxX",*_p) != NULL) {
|
if (*_p != '\0' && strchr(intfmts,*_p) != NULL) {
|
||||||
va_arg(ap,long);
|
va_arg(ap,long);
|
||||||
goto fmt_valid;
|
goto fmt_valid;
|
||||||
}
|
}
|
||||||
|
5
test.c
5
test.c
@ -177,7 +177,7 @@ static void test_format_commands(void) {
|
|||||||
FLOAT_WIDTH_TEST(double);
|
FLOAT_WIDTH_TEST(double);
|
||||||
|
|
||||||
test("Format command with invalid printf format: ");
|
test("Format command with invalid printf format: ");
|
||||||
len = redisFormatCommand(&cmd,"key:%08p %b",1234,"foo",3);
|
len = redisFormatCommand(&cmd,"key:%08p %b",(void*)1234,"foo",3);
|
||||||
test_cond(len == -1);
|
test_cond(len == -1);
|
||||||
|
|
||||||
const char *argv[3];
|
const char *argv[3];
|
||||||
@ -283,7 +283,8 @@ static void test_blocking_connection_errors(void) {
|
|||||||
test("Returns error when host cannot be resolved: ");
|
test("Returns error when host cannot be resolved: ");
|
||||||
c = redisConnect((char*)"idontexist.local", 6379);
|
c = redisConnect((char*)"idontexist.local", 6379);
|
||||||
test_cond(c->err == REDIS_ERR_OTHER &&
|
test_cond(c->err == REDIS_ERR_OTHER &&
|
||||||
strcmp(c->errstr,"Can't resolve: idontexist.local") == 0);
|
(strcmp(c->errstr,"Name or service not known") == 0 ||
|
||||||
|
strcmp(c->errstr,"Can't resolve: idontexist.local") == 0));
|
||||||
redisFree(c);
|
redisFree(c);
|
||||||
|
|
||||||
test("Returns error when the port is not open: ");
|
test("Returns error when the port is not open: ");
|
||||||
|
Loading…
Reference in New Issue
Block a user