[libvirt] [PATCH v2 3/8] util: Generate a common internal only error print

John Ferlan jferlan at redhat.com
Mon Jun 5 11:53:26 UTC 2017



On 06/05/2017 03:39 AM, Peter Krempa wrote:
> On Fri, Jun 02, 2017 at 06:17:17 -0400, John Ferlan wrote:
>> If virObjectIsClass fails "internally" to virobject.c, create a macro to
>> generate the VIR_WARN describing what the problem is. Also improve the
>> checks and message a bit to indicate which was the failure - whether the
>> obj was NULL or just not the right class
>>
>> Signed-off-by: John Ferlan <jferlan at redhat.com>
>> ---
>>  src/util/virobject.c | 16 +++++++++++-----
>>  1 file changed, 11 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/util/virobject.c b/src/util/virobject.c
>> index 34805d3..9f5f187 100644
>> --- a/src/util/virobject.c
>> +++ b/src/util/virobject.c
>> @@ -47,6 +47,16 @@ struct _virClass {
>>      virObjectDisposeCallback dispose;
>>  };
>>  
>> +#define VIR_OBJECT_USAGE_PRINT_WARNING(anyobj, objclass)                    \
>> +    do {                                                                    \
>> +        virObjectPtr obj = anyobj;                                          \
>> +        if (!obj)                                                           \
>> +            VIR_WARN("Object %p is not a virObject class instance", anyobj);\
> 
> Is this really helpful?
> 
> Object (nil) is not a virObject class instance.
> 
> %p does not make sense since it's always NULL, and also obviously a
> null pointer is not a class instance ...
> 

True; however, if you had snipped more context:

-    VIR_WARN("Object %p (%s) is not a virObjectLockable instance",
-              anyobj, obj ? obj->klass->name : "(unknown)");

the old context used the "? ... :" and would also have said "Object
(nil) (unknown) is not... " - I just went more direct and removed the
assumption that it's a virObjectLockable instance.  I can change the
message if that's all you object to though.

The goal here was the second half of the message to be more explicit.

John




More information about the libvir-list mailing list