From 4490d9d1f6d50d2f1e474d2e39f783c39a952c4a Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 24 Sep 2015 10:31:28 -0700 Subject: [PATCH] Support NaN in path expressions (fix #962) --- src/jv.c | 3 ++- tests/jq.test | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/jv.c b/src/jv.c index 6a446ae3..9c6a868c 100644 --- a/src/jv.c +++ b/src/jv.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "jv_alloc.h" #include "jv.h" @@ -1302,7 +1303,7 @@ int jv_identical(jv a, jv b) { r = a.u.ptr == b.u.ptr; break; case JV_KIND_NUMBER: - r = a.u.number == b.u.number; + r = a.u.number == b.u.number || (isnan(a.u.number) && isnan(b.u.number)); break; default: r = 1; diff --git a/tests/jq.test b/tests/jq.test index 6c75192e..c7c1d371 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -851,6 +851,10 @@ try (def x: reverse; x=10) catch . [0,1,2] "Invalid path expression with result [2,1,0]" +.[] = 1 +[1,null,Infinity,-Infinity,NaN,-NaN] +[1,1,1,1,1,1] + # # Conditionals #