• E
    qapi: Make all visitors supply uint64 callbacks · f755dea7
    Eric Blake 提交于
    Our qapi visitor contract supports multiple integer visitors,
    but left the type_uint64 visitor as optional (falling back on
    type_int64); which in turn can lead to awkward behavior with
    numbers larger than INT64_MAX (the user has to be aware of
    twos complement, and deal with negatives).
    
    This patch does not address the disparity in handling large
    values as negatives.  It merely moves the fallback from uint64
    to int64 from the visitor core to the visitors, where the issue
    can actually be fixed, by implementing the missing type_uint64()
    callbacks on top of the respective type_int64() callbacks, and
    with a FIXME comment explaining why that's wrong.
    
    With that done, we now have a type_uint64() callback in every
    driver, so we can make it mandatory from the core.  And although
    the type_int64() callback can cover the entire valid range of
    type_uint{8,16,32} on valid user input, using type_uint64() to
    avoid mixed signedness makes more sense.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    Message-Id: <1454075341-13658-15-git-send-email-eblake@redhat.com>
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    f755dea7
qapi-visit-core.c 7.8 KB