]> xenbits.xensource.com Git - qemu-xen.git/commit
string-output-visitor: Fix to use sufficient precision
authorMarkus Armbruster <armbru@redhat.com>
Thu, 10 Dec 2020 16:14:50 +0000 (17:14 +0100)
committerMarkus Armbruster <armbru@redhat.com>
Sat, 19 Dec 2020 09:37:16 +0000 (10:37 +0100)
commit54addb01d8c2511ef96b0f0ca6b695d120dd8363
treea8ac70074b5c5c0d8729898f309ef0cc20d73339
parent7b205a7373c25db2f3680dee5a8c82e038135ec1
string-output-visitor: Fix to use sufficient precision

The string output visitor should serialize numbers so that the string
input visitor deserializes them back to the same number.  It fails to
do so.

print_type_number() uses format %f.  This is prone to nasty rounding
errors.  For instance, numbers between 0 and 0.0000005 get flushed to
zero.

We currently use this visitor only for HMP info migrate, info network,
info qtree, and info memdev.  No double values occur there as far as I
can tell.

Fix anyway by formatting with %.17g.  17 decimal digits always suffice
for IEEE double.

See also recent commit "qobject: Fix qnum_to_string() to use
sufficient precision".

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20201210161452.2813491-9-armbru@redhat.com>
qapi/string-output-visitor.c
tests/test-string-output-visitor.c