Commit 563b062e authored by Michael Grunder's avatar Michael Grunder
Browse files

Accept -nan per the RESP3 spec recommendation.

For reference:
https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md
parent 04c1b5b0
...@@ -303,7 +303,8 @@ static int processLineItem(redisReader *r) { ...@@ -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);
......
...@@ -684,6 +684,16 @@ static void test_reply_reader(void) { ...@@ -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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment