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(a)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