[libvirt] [PATCH 2/8] Add qemuMonitorGetObjectProperty() method for QMP qom-get command

John Ferlan jferlan at redhat.com
Mon Jul 8 17:10:22 UTC 2013


On 07/03/2013 08:20 AM, Michal Privoznik wrote:
> On 03.07.2013 14:12, Ján Tomko wrote:
>> On 07/03/2013 02:03 PM, Michal Privoznik wrote:
>>> On 02.07.2013 15:39, John Ferlan wrote:
>>>> +    case QEMU_MONITOR_OBJECT_PROPERTY_STRING:
>>>> +        tmp = virJSONValueGetString(data);
>>>> +        if (tmp && VIR_STRDUP(prop->val.str, tmp) < 0)
>>>
>>> Lose the 'tmp' here as VIR_STRDUP will check it for NULL anyway. In
>>> fact, these lines can be rewritten into a single line:
>>>
>>> ret = VIR_STRDUP(prop->val.str, tmp);
>>>
>>>> +            goto cleanup;
>>>> +        if (tmp)
>>>> +            ret = 0;
>>>> +        break;
>>
>> Not at all. Before it returns 0 if GetString returned something.
>> After your change, ret will be 1 in that case, and 0 if GetString returned
>> nothing.
>>
>> Jan
>>
> 
> But if you take a look a few lines below, we will rewrite ret = 0
> anyway. The only exception is if VIR_STRDUP fails. Which I should have
> checked, right.
> 
> 
> Michal
> 

I didn't want VIR_STRDUP() to be called if 'data' wasn't a string.  That
is - I don't want an empty "" returned.  That allows the error to be
reported that there's invalid data.

Although it seems the qemuMonitorJSONHumanCommandWithFd() does an
extraneous check for VIR_STRDUP():

        data = virJSONValueGetString(obj);
        if (VIR_STRDUP(*reply_str, data ? data : "") < 0)
            goto cleanup;

Not part of this, but I was checking callers for virJSONValueGetString()

John




More information about the libvir-list mailing list