Hi On Thu, Apr 19, 2018 at 8:16 AM, Markus Armbruster <arm...@redhat.com> wrote: > 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?
git sed (as said in previous reviews). And fixing the new compiler warning iirc. >> 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. fixed thanks > >> * 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. >> */ > [...] > -- Marc-André Lureau