mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
build: allow virObject to have no parent
When building with static analysis enabled, we turn on attribute nonnull checking. However, this caused the build to fail with: ../../src/util/virobject.c: In function 'virObjectOnceInit': ../../src/util/virobject.c:55:40: error: null argument where non-null required (argument 1) [-Werror=nonnull] Creation of the virObject class is the one instance where the parent class is allowed to be NULL. Making things conditional will let us keep static analysis checking for all other .c file callers, without breaking the build on this one exception. * src/util/virobject.c: Define witness. * src/util/virobject.h (virClassNew): Use it to force most callers to pass non-null parameter.
This commit is contained in:
parent
55bfd020d8
commit
682c79c4f5
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* virobject.c: libvirt reference counted object
|
||||
*
|
||||
* Copyright (C) 2012 Red Hat, Inc.
|
||||
* Copyright (C) 2012-2013 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -21,6 +21,7 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#define VIR_PARENT_REQUIRED /* empty, to allow virObject to have no parent */
|
||||
#include "virobject.h"
|
||||
#include "virthread.h"
|
||||
#include "viralloc.h"
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* virobject.h: libvirt reference counted object
|
||||
*
|
||||
* Copyright (C) 2012 Red Hat, Inc.
|
||||
* Copyright (C) 2012-2013 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -51,11 +51,14 @@ struct _virObjectLockable {
|
||||
virClassPtr virClassForObject(void);
|
||||
virClassPtr virClassForObjectLockable(void);
|
||||
|
||||
# ifndef VIR_PARENT_REQUIRED
|
||||
# define VIR_PARENT_REQUIRED ATTRIBUTE_NONNULL(1)
|
||||
# endif
|
||||
virClassPtr virClassNew(virClassPtr parent,
|
||||
const char *name,
|
||||
size_t objectSize,
|
||||
virObjectDisposeCallback dispose)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
VIR_PARENT_REQUIRED ATTRIBUTE_NONNULL(2);
|
||||
|
||||
const char *virClassName(virClassPtr klass)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user