From e03d6e09983bb5ad99352933c4d2f21b139294d2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 15 Feb 2016 14:46:23 +0100 Subject: Fix broken number parsing in fromJSON The call to tmp_number.append had its arguments mixed up. Also, JSON does not allow a trailing "," after array/object members. --- src/libexpr/json-to-value.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/libexpr/json-to-value.cc b/src/libexpr/json-to-value.cc index 7ef2b2c56227..1daf84600dca 100644 --- a/src/libexpr/json-to-value.cc +++ b/src/libexpr/json-to-value.cc @@ -113,14 +113,13 @@ static void parseJSON(EvalState & state, const char * & s, Value & v) while (isdigit(*s) || *s == '-' || *s == '.' || *s == 'e' || *s == 'E') { if (*s == '.' || *s == 'e' || *s == 'E') number_type = tFloat; - tmp_number.append(*s++, 1); + tmp_number += *s++; } - if (number_type == tFloat) { + if (number_type == tFloat) mkFloat(v, stod(tmp_number)); - } else { + else mkInt(v, stoi(tmp_number)); - } } else if (strncmp(s, "true", 4) == 0) { -- cgit 1.4.1