summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--json_object.c3
-rw-r--r--json_tokener.c3
-rw-r--r--json_tokener.h2
-rw-r--r--json_util.c1
-rw-r--r--test1.c1
-rw-r--r--test2.c1
7 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 7121199..002c995 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,9 @@
0.8
* Add macros to enable compiling out debug code
Geoffrey Young, geoff at modperlcookbook dot org
+ * Fix bug with use of capital E in numbers with exponents
+ Mateusz Loskot, mateusz at loskot dot net
+ * Add stddef.h include
0.7
* Add escaping of backslash to json output
diff --git a/json_object.c b/json_object.c
index a629f61..c1ffb0a 100644
--- a/json_object.c
+++ b/json_object.c
@@ -13,6 +13,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include "debug.h"
@@ -29,7 +30,7 @@
#define REFCOUNT_DEBUG 1
-char *json_number_chars = "0123456789.+-e";
+char *json_number_chars = "0123456789.+-eE";
char *json_hex_chars = "0123456789abcdef";
#ifdef REFCOUNT_DEBUG
diff --git a/json_tokener.c b/json_tokener.c
index ba329fe..c904f48 100644
--- a/json_tokener.c
+++ b/json_tokener.c
@@ -13,6 +13,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <stddef.h>
#include <ctype.h>
#include <string.h>
@@ -378,7 +379,7 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
case json_tokener_state_number:
if(c && strchr(json_number_chars, c)) {
printbuf_memappend(tok->pb, &c, 1);
- if(c == '.' || c == 'e') tok->is_double = 1;
+ if(c == '.' || c == 'e' || c == 'E') tok->is_double = 1;
} else {
int numi;
double numd;
diff --git a/json_tokener.h b/json_tokener.h
index d2c2127..2c7ea69 100644
--- a/json_tokener.h
+++ b/json_tokener.h
@@ -71,7 +71,7 @@ struct json_tokener
char *str;
struct printbuf *pb;
int depth, is_double, st_pos, char_offset;
- enum json_tokener_error err;
+ ptrdiff_t err;
unsigned int ucs_char;
char quote_char;
struct json_tokener_srec stack[JSON_TOKENER_MAX_DEPTH];
diff --git a/json_util.c b/json_util.c
index 903a694..1a65596 100644
--- a/json_util.c
+++ b/json_util.c
@@ -13,6 +13,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <stddef.h>
#include <limits.h>
#include <string.h>
#include <errno.h>
diff --git a/test1.c b/test1.c
index f894fac..a64a255 100644
--- a/test1.c
+++ b/test1.c
@@ -1,5 +1,6 @@
#include <stdio.h>
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include "json.h"
diff --git a/test2.c b/test2.c
index afbd386..39c4884 100644
--- a/test2.c
+++ b/test2.c
@@ -1,5 +1,6 @@
#include <stdio.h>
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include "json.h"