aboutsummaryrefslogtreecommitdiff
path: root/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/parse.c b/parse.c
index b02e649f..f07f3ba8 100644
--- a/parse.c
+++ b/parse.c
@@ -712,8 +712,12 @@ PARSER(parse_num) {
len += 1 + strspn(pos + len + 1, "0123456789");
else if (pos[len] != 'e' && pos[len] != 'f' && pos[len] != '%')
return NULL;
- if (pos[len] == 'e')
- len += 1 + strspn(pos + len + 1, "-0123456789_");
+ if (pos[len] == 'e') {
+ len += 1;
+ if (pos[len] == '-')
+ len += 1;
+ len += strspn(pos + len, "0123456789_");
+ }
char *buf = GC_MALLOC_ATOMIC(len+1);
memset(buf, 0, len+1);
for (char *src = (char*)pos, *dest = buf; src < pos+len; ++src) {