Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpx/lua-cjson.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Pulford <mark@kyne.com.au>2012-03-03 04:18:09 +0400
committerMark Pulford <mark@kyne.com.au>2012-03-04 13:36:37 +0400
commitd5090bb8f19f4b0fd868a5f9af367ebbb67b7f5a (patch)
treeb963cb47157c384ac8332602e3f0e1e694fc688f /lua_cjson.c
parent4bc5e917c8cd5fc2f6b217512ef530007529322f (diff)
Use Javascript compat values for Infinity/NaN
Use Javascript compatible values for Infinity/NaN when encoding invalid numbers.
Diffstat (limited to 'lua_cjson.c')
-rw-r--r--lua_cjson.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/lua_cjson.c b/lua_cjson.c
index ca5b88d..c14a1c5 100644
--- a/lua_cjson.c
+++ b/lua_cjson.c
@@ -592,12 +592,20 @@ static void json_append_number(lua_State *l, json_config_t *cfg,
if (cfg->encode_invalid_numbers == 0) {
/* Prevent encoding invalid numbers */
if (isinf(num) || isnan(num))
- json_encode_exception(l, cfg, json, lindex, "must not be NaN or Inf");
+ json_encode_exception(l, cfg, json, lindex,
+ "must not be NaN or Infinity");
} else if (cfg->encode_invalid_numbers == 1) {
- /* Encode invalid numbers, but handle "nan" separately
- * since some platforms may encode as "-nan". */
+ /* Encode NaN/Infinity separately to ensure Javascript compatible
+ * values are used. */
if (isnan(num)) {
- strbuf_append_mem(json, "nan", 3);
+ strbuf_append_mem(json, "NaN", 3);
+ return;
+ }
+ if (isinf(num)) {
+ if (num < 0)
+ strbuf_append_mem(json, "-Infinity", 9);
+ else
+ strbuf_append_mem(json, "Infinity", 8);
return;
}
} else {