summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Benoish <guy.benoish@redislabs.com>2019-11-05 19:23:37 +0530
committerGuy Benoish <guy.benoish@redislabs.com>2019-11-05 19:23:37 +0530
commit8beec4f0e78cebce9cd14d72fa4a622538b7c045 (patch)
tree716e1f705293bc833d0e45082d9082940a533d61
parenta15a5d70976cc185389b0d515265b443e5a3a0f3 (diff)
downloadredis-8beec4f0e78cebce9cd14d72fa4a622538b7c045.tar.gz
Make sure Redis does not reply with negative zero
-rw-r--r--src/util.c4
-rw-r--r--tests/unit/type/incr.tcl6
2 files changed, 10 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c
index 062a572d4..80b5a2453 100644
--- a/src/util.c
+++ b/src/util.c
@@ -560,6 +560,10 @@ int ld2string(char *buf, size_t len, long double value, ld2string_mode mode) {
}
if (*p == '.') l--;
}
+ if (l == 2 && buf[0] == '-' && buf[1] == '0') {
+ buf[0] = '0';
+ l = 1;
+ }
break;
default: return 0; /* Invalid mode. */
}
diff --git a/tests/unit/type/incr.tcl b/tests/unit/type/incr.tcl
index a58710d39..63bf2e116 100644
--- a/tests/unit/type/incr.tcl
+++ b/tests/unit/type/incr.tcl
@@ -151,4 +151,10 @@ start_server {tags {"incr"}} {
catch {r incrbyfloat foo 1} err
format $err
} {ERR*valid*}
+
+ test {No negative zero} {
+ r incrbyfloat foo [expr double(1)/41]
+ r incrbyfloat foo [expr double(-1)/41]
+ r get foo
+ } {0}
}