summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2019-05-14 14:45:54 +1000
committerDamien George <damien.p.george@gmail.com>2019-05-14 14:45:54 +1000
commit7c5cf59f8b9a5e62534e78558eb654bc664a3a6f (patch)
tree9c4a8491cc7eb6c6702fdfcc926f2eeb337a45b1
parent7359a9e2f205008e05e99032a0b94fdc20281e0f (diff)
extmod/modujson: Handle parsing of floats with + in the exponent.
Fixes issue #4780.
-rw-r--r--extmod/modujson.c2
-rw-r--r--tests/extmod/ujson_loads_float.py1
2 files changed, 2 insertions, 1 deletions
diff --git a/extmod/modujson.c b/extmod/modujson.c
index 830b588fd..f5c6428ef 100644
--- a/extmod/modujson.c
+++ b/extmod/modujson.c
@@ -185,7 +185,7 @@ STATIC mp_obj_t mod_ujson_load(mp_obj_t stream_obj) {
cur = S_CUR(s);
if (cur == '.' || cur == 'E' || cur == 'e') {
flt = true;
- } else if (cur == '-' || unichar_isdigit(cur)) {
+ } else if (cur == '+' || cur == '-' || unichar_isdigit(cur)) {
// pass
} else {
break;
diff --git a/tests/extmod/ujson_loads_float.py b/tests/extmod/ujson_loads_float.py
index f1b8cc364..086853a2d 100644
--- a/tests/extmod/ujson_loads_float.py
+++ b/tests/extmod/ujson_loads_float.py
@@ -14,4 +14,5 @@ my_print(json.loads('1.2'))
my_print(json.loads('1e2'))
my_print(json.loads('-2.3'))
my_print(json.loads('-2e3'))
+my_print(json.loads('-2e+3'))
my_print(json.loads('-2e-3'))