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
diff --git a/json_object.c b/json_object.c
index f2b5ce0..b955f6d 100644
--- a/json_object.c
+++ b/json_object.c
@@ -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 @@
 {
   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 = '.';