qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/2] qobject: Use 'bool' for qbool


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH 1/2] qobject: Use 'bool' for qbool
Date: Fri, 12 Jun 2015 09:38:17 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0

On 06/11/2015 11:35 PM, Markus Armbruster wrote:
> Patch looks good to me, but it made me wonder about something.  Please
> find the question inline.
> 
> Eric Blake <address@hidden> writes:
> 
>> We require a C99 compiler, so let's use 'bool' instead of 'int'
>> when dealing with boolean values.  There are few enough clients
>> to fix them all in one pass.
>>

>> @@ -593,7 +593,7 @@ static QObject *parse_escape(JSONParserContext *ctxt, 
>> va_list *ap)
>>      if (token_is_escape(token, "%p")) {
>>          obj = va_arg(*ap, QObject *);
>>      } else if (token_is_escape(token, "%i")) {
>> -        obj = QOBJECT(qbool_from_int(va_arg(*ap, int)));
>> +        obj = QOBJECT(qbool_from_bool(va_arg(*ap, int)));
> 
> Funny: JSON_ESCAPE "%i" gets an int, but maps it to bool.  See also
> patch to check-qjson.c below.
> 
> Is this feature actually used anywhere other than the tests?
> 

When using va_arg(), you have to use the type argument that things
promote to when called through var-args (that is, va_arg(*ap, bool)
would be a compiler warning).

I don't know if anyone besides the testsuite is using %i; but I've
already mentioned in another thread [1] that the correlation between...

>>
>> -    obj = qobject_from_jsonf("%i", true);
>> +    /* Test that non-zero values other than 1 get collapsed to true */
>> +    obj = qobject_from_jsonf("%i", 2);
>>      g_assert(obj != NULL);
>>      g_assert(qobject_type(obj) == QTYPE_QBOOL);
> 
> These are test test cases for JSON_ESCAPE "%i".

...qobject_from_json in one file to the implementation of %i in another
was very hard to trace when writing this patch, as well as the idea of
getting rid of the remaining 2 out of only 3 clients of %p [1].  So it's
already on my table of ideas to do a followup patch that adds
documentation, and audits all clients to see what can be pruned.

[1] https://lists.gnu.org/archive/html/qemu-devel/2015-05/msg04660.html


-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org



-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]