Accept -nan per the RESP3 spec recommendation.
For reference: https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md
This commit is contained in:
parent
04c1b5b029
commit
563b062e37
3
read.c
3
read.c
@ -303,7 +303,8 @@ static int processLineItem(redisReader *r) {
|
|||||||
d = INFINITY; /* Positive infinite. */
|
d = INFINITY; /* Positive infinite. */
|
||||||
} else if (len == 4 && strcasecmp(buf,"-inf") == 0) {
|
} else if (len == 4 && strcasecmp(buf,"-inf") == 0) {
|
||||||
d = -INFINITY; /* Negative infinite. */
|
d = -INFINITY; /* Negative infinite. */
|
||||||
} else if (len == 3 && strcasecmp(buf,"nan") == 0) {
|
} else if ((len == 3 && strcasecmp(buf,"nan") == 0) ||
|
||||||
|
(len == 4 && strcasecmp(buf, "-nan") == 0)) {
|
||||||
d = NAN; /* nan. */
|
d = NAN; /* nan. */
|
||||||
} else {
|
} else {
|
||||||
d = strtod((char*)buf,&eptr);
|
d = strtod((char*)buf,&eptr);
|
||||||
|
|||||||
10
test.c
10
test.c
@ -684,6 +684,16 @@ static void test_reply_reader(void) {
|
|||||||
freeReplyObject(reply);
|
freeReplyObject(reply);
|
||||||
redisReaderFree(reader);
|
redisReaderFree(reader);
|
||||||
|
|
||||||
|
test("Correctly parses RESP3 double -Nan: ");
|
||||||
|
reader = redisReaderCreate();
|
||||||
|
redisReaderFeed(reader, ",-nan\r\n", 7);
|
||||||
|
ret = redisReaderGetReply(reader, &reply);
|
||||||
|
test_cond(ret == REDIS_OK &&
|
||||||
|
((redisReply*)reply)->type == REDIS_REPLY_DOUBLE &&
|
||||||
|
isnan(((redisReply*)reply)->dval));
|
||||||
|
freeReplyObject(reply);
|
||||||
|
redisReaderFree(reader);
|
||||||
|
|
||||||
test("Can parse RESP3 nil: ");
|
test("Can parse RESP3 nil: ");
|
||||||
reader = redisReaderCreate();
|
reader = redisReaderCreate();
|
||||||
redisReaderFeed(reader, "_\r\n",3);
|
redisReaderFeed(reader, "_\r\n",3);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user