From f0bdf8405b9f16013385bd81895e646aca134d4f Mon Sep 17 00:00:00 2001 From: filipe oliveira Date: Mon, 14 Nov 2022 16:55:52 +0000 Subject: Add support for nan in RESP3 double (#1133) --- read.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'read.c') diff --git a/read.c b/read.c index 228d4d0..8e6d21b 100644 --- a/read.c +++ b/read.c @@ -303,11 +303,13 @@ static int processLineItem(redisReader *r) { d = INFINITY; /* Positive infinite. */ } else if (len == 4 && strcasecmp(buf,"-inf") == 0) { d = -INFINITY; /* Negative infinite. */ + } else if (len == 3 && strcasecmp(buf,"nan") == 0) { + d = NAN; /* nan. */ } else { d = strtod((char*)buf,&eptr); /* RESP3 only allows "inf", "-inf", and finite values, while - * strtod() allows other variations on infinity, NaN, - * etc. We explicity handle our two allowed infinite cases + * strtod() allows other variations on infinity, + * etc. We explicity handle our two allowed infinite cases and NaN * above, so strtod() should only result in finite values. */ if (buf[0] == '\0' || eptr != &buf[len] || !isfinite(d)) { __redisReaderSetError(r,REDIS_ERR_PROTOCOL, -- cgit v1.2.3