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.
This commit is contained in:
Eelco Dolstra 2016-02-15 14:46:23 +01:00
parent eb62e23f14
commit e03d6e0998
2 changed files with 4 additions and 5 deletions

View file

@ -113,15 +113,14 @@ static void parseJSON(EvalState & state, const char * & s, Value & v)
while (isdigit(*s) || *s == '-' || *s == '.' || *s == 'e' || *s == 'E') { while (isdigit(*s) || *s == '-' || *s == '.' || *s == 'e' || *s == 'E') {
if (*s == '.' || *s == 'e' || *s == 'E') if (*s == '.' || *s == 'e' || *s == 'E')
number_type = tFloat; number_type = tFloat;
tmp_number.append(*s++, 1); tmp_number += *s++;
} }
if (number_type == tFloat) { if (number_type == tFloat)
mkFloat(v, stod(tmp_number)); mkFloat(v, stod(tmp_number));
} else { else
mkInt(v, stoi(tmp_number)); mkInt(v, stoi(tmp_number));
} }
}
else if (strncmp(s, "true", 4) == 0) { else if (strncmp(s, "true", 4) == 0) {
s += 4; s += 4;

View file

@ -14,7 +14,7 @@ builtins.fromJSON
"Animated" : false, "Animated" : false,
"IDs": [116, 943, 234, 38793, true ,false,null, -100], "IDs": [116, 943, 234, 38793, true ,false,null, -100],
"Latitude": 37.7668, "Latitude": 37.7668,
"Longitude": -122.3959, "Longitude": -122.3959
} }
} }
'' ''