Fixes for Infinity and NaN
Although JSON RFC does not support NaN or Infinity as numeric values ECMA 262 section 9.8.1 defines how to handle these cases as strings
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "debug.h"
|
||||
#include "printbuf.h"
|
||||
@@ -561,8 +562,19 @@ static int json_object_double_to_json_string(struct json_object* jso,
|
||||
{
|
||||
char buf[128], *p, *q;
|
||||
int size;
|
||||
/* Although JSON RFC does not support
|
||||
NaN or Infinity as numeric values
|
||||
ECMA 262 section 9.8.1 defines
|
||||
how to handle these cases as strings */
|
||||
if(isnan(jso->o.c_double))
|
||||
size = snprintf(buf, 128, "NaN");
|
||||
else if(isinf(jso->o.c_double) == 1)
|
||||
size = snprintf(buf, 128, "Infinity");
|
||||
else if(isinf(jso->o.c_double) == -1)
|
||||
size = snprintf(buf, 128, "-Infinity");
|
||||
else
|
||||
size = snprintf(buf, 128, "%f", jso->o.c_double);
|
||||
|
||||
size = snprintf(buf, 128, "%f", jso->o.c_double);
|
||||
p = strchr(buf, ',');
|
||||
if (p) {
|
||||
*p = '.';
|
||||
|
||||
Reference in New Issue
Block a user