On 7/10/19 6:50 AM, Eric Blake wrote:
On 7/10/19 2:02 AM, Peter Krempa wrote:
> On Tue, Jul 09, 2019 at 12:46:30 -0500, Eric Blake wrote:
>> Even though we don't accept any flags, it is unfriendly to callers
>> that use the modern API to have to fall back to the flag-free API.
>>
>> Signed-off-by: Eric Blake <eblake(a)redhat.com>
>> ---
>> -vboxDomainSave(virDomainPtr dom, const char *path
ATTRIBUTE_UNUSED)
>> +vboxDomainSaveFlags(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED,
>> + const char *dxml, unsigned int flags)
>> {
>> vboxDriverPtr data = dom->conn->privateData;
>> IConsole *console = NULL;
>> @@ -564,6 +565,9 @@ vboxDomainSave(virDomainPtr dom, const char *path
ATTRIBUTE_UNUSED)
>> nsresult rc;
>> int ret = -1;
>>
>> + virCheckFlags(0, -1);
>> + virCheckNonNullArgReturn(dxml, -1);
>
> This reports: invalid argument: dxml in vboxDomainSave must not be NULL
>
Revisiting this thread:
internal.h has:
virCheckNullArgGoto (complains if argument is not NULL)
virCheckNonNullArgReturn (complains if argument is NULL)
virCheckNonNullArgGoto (complains if argument is NULL)
but is missing virCheckNullArgReturn, which is the form I really meant
to use here. I have no idea if that missing macro is intentional, but it
would be easy enough to add.
> I'm not certain that the internal function name makes sense
to external
> users.
In which case I can hand-roll a more specific error instead of reusing
the common macro. But I do see pre-existing uses of
virCheckNonNullArgXXX in src/esx and src/vz prior to this patch, so it's
not the first time we've used the common macros.
Directly calling virReportInvalidNonNullArg() would be the only way to
hand-roll this properly, but no one outside of internal.h and
src/util/virobject.c uses it. I'd prefer to sick with
virCheckNullArgReturn().
>> +static int
>> +vboxDomainSave(virDomainPtr dom, const char *path)
>> +{
>> + return vboxDomainSaveFlags(dom, path, NULL, 0);
>
> So, this passes NULL 'dxml' into vboxDomainSaveFlags which explicitly
> rejects it. What's the point?
>
> Ah I see. Was the above supposed to be virCheckNullArgGoto?
D'oh. Yes, I got it backwards. The function wants to succeed only if
the user omitted the optional dxml argument.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization:
qemu.org |
libvirt.org