Marc-André Lureau <marcandre.lur...@redhat.com> writes: > Now that we can safely call QOBJECT() on QObject * as well as its > subtypes, we can have macros qobject_ref() / qobject_unref() that work > everywhere instead of having to use QINCREF() / QDECREF() for QObject > and qobject_incref() / qobject_decref() for its subtypes. > > Note that the new macros evaluate their argument exactly once, thus no > need to shout them. > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > scripts/qapi/events.py | 2 +- > include/qapi/qmp/qnull.h | 2 +- > include/qapi/qmp/qobject.h | 36 +++++----- [...] > tests/wdt_ib700-test.c | 14 ++-- > util/keyval.c | 12 ++-- > util/qemu-config.c | 4 +- > docs/devel/qapi-code-gen.txt | 2 +- > scripts/coccinelle/qobject.cocci | 8 +-- > 94 files changed, 606 insertions(+), 610 deletions(-)
The patch is not entirely mechanical (evidence: Eric's observations). How did you create it? > diff --git a/scripts/qapi/events.py b/scripts/qapi/events.py > index 3dc523cf39..4426861ff1 100644 > --- a/scripts/qapi/events.py > +++ b/scripts/qapi/events.py > @@ -142,7 +142,7 @@ out: > ''') > ret += mcgen(''' > error_propagate(errp, err); > - QDECREF(qmp); > + qobject_unref(qmp); > } > ''') > return ret > diff --git a/include/qapi/qmp/qnull.h b/include/qapi/qmp/qnull.h > index e8ea2c315a..75b29c6a39 100644 > --- a/include/qapi/qmp/qnull.h > +++ b/include/qapi/qmp/qnull.h > @@ -23,7 +23,7 @@ extern QNull qnull_; > > static inline QNull *qnull(void) > { > - QINCREF(&qnull_); > + qobject_ref(&qnull_); > return &qnull_; > } > > diff --git a/include/qapi/qmp/qobject.h b/include/qapi/qmp/qobject.h > index 0a7f800d58..e08fbb80b9 100644 > --- a/include/qapi/qmp/qobject.h > +++ b/include/qapi/qmp/qobject.h > @@ -16,16 +16,16 @@ > * > * - Returning references: A function that returns an object may > * return it as either a weak or a strong reference. If the reference > - * is strong, you are responsible for calling QDECREF() on the reference > + * is strong, you are responsible for calling qobject_unref() on the > reference Long line. > * when you are done. > * > * If the reference is weak, the owner of the reference may free it at > * any time in the future. Before storing the reference anywhere, you > - * should call QINCREF() to make the reference strong. > + * should call qobject_ref() to make the reference strong. > * > * - Transferring ownership: when you transfer ownership of a reference > * by calling a function, you are no longer responsible for calling > - * QDECREF() when the reference is no longer needed. In other words, > + * qobject_unref() when the reference is no longer needed. In other words, > * when the function returns you must behave as if the reference to the > * passed object was weak. > */ [...]