diff options
author | Eric Blake <eblake@redhat.com> | 2016-01-29 06:48:37 -0700 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2016-02-08 17:29:54 +0100 |
commit | 6e8e5cb9aa663ba59d4ca0f4cb8307d75163e31a (patch) | |
tree | a5641f2c23f4a2c923b802ff58ca3108a3c83165 /qobject/json-parser.c | |
parent | 03e188102ca8d2eab16a8d0e7818c533a93bb799 (diff) | |
download | qemu-6e8e5cb9aa663ba59d4ca0f4cb8307d75163e31a.zip qemu-6e8e5cb9aa663ba59d4ca0f4cb8307d75163e31a.tar.gz qemu-6e8e5cb9aa663ba59d4ca0f4cb8307d75163e31a.tar.bz2 |
qobject: Document more shortcomings in our number handling
We've already documented that our JSON parsing is locale dependent;
but we should also document that our JSON output has the same
problem. Additionally, JSON requires finite values (you have to
upgrade to JSON5 to get support for Inf or NaN), and our output
truncates floating point numbers to the point of losing significant
precision that could cause the receiver to read a different value.
Sadly, this series is not going to be the one that addresses these
problems.
Fix some trailing whitespace I noticed in the vicinity.
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1454075341-13658-2-git-send-email-eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'qobject/json-parser.c')
-rw-r--r-- | qobject/json-parser.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/qobject/json-parser.c b/qobject/json-parser.c index 77c9382..6c05f6c 100644 --- a/qobject/json-parser.c +++ b/qobject/json-parser.c @@ -1,5 +1,5 @@ /* - * JSON Parser + * JSON Parser * * Copyright IBM, Corp. 2009 * @@ -518,7 +518,9 @@ static QObject *parse_literal(JSONParserContext *ctxt) /* fall through to JSON_FLOAT */ } case JSON_FLOAT: - /* FIXME dependent on locale */ + /* FIXME dependent on locale; a pervasive issue in QEMU */ + /* FIXME our lexer matches RFC 7159 in forbidding Inf or NaN, + * but those might be useful extensions beyond JSON */ return QOBJECT(qfloat_from_double(strtod(token->str, NULL))); default: abort(); |