diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2015-11-10 09:39:24 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-11-10 09:39:24 +0000 |
commit | a8b4f9585a0bf5186fca793ce2c5d754cd8ec49a (patch) | |
tree | d9e1c80de4fdeb4d89b4e22743c0be83d486eb5a /include | |
parent | ce278618b088afd10b91a05311eaeb6401bb5004 (diff) | |
parent | f5455044201747fd72531f5e8c1b1e9c56573d9c (diff) |
Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2015-11-10' into staging
QAPI patches
# gpg: Signature made Tue 10 Nov 2015 07:12:25 GMT using RSA key ID EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg: aka "Markus Armbruster <armbru@pond.sub.org>"
* remotes/armbru/tags/pull-qapi-2015-11-10:
qapi-introspect: Document lack of sorting
qapi: Provide nicer array names in introspection
qapi: More tests of input arrays
qapi: Test failure in middle of array parse
qapi: More tests of alternate output
qapi: Simplify error cleanup in test-qmp-*
qapi: Simplify non-error testing in test-qmp-*
qapi: Plug leaks in test-qmp-*
qapi: Share test_init code in test-qmp-input*
qobject: Protect against use-after-free in qobject_decref()
qapi: Strengthen test of TestStructList
qapi: Use generated TestStruct machinery in tests
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/qapi/error.h | 9 | ||||
-rw-r--r-- | include/qapi/qmp/qobject.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/include/qapi/error.h b/include/qapi/error.h index c69dddbbf2..4d42cdc5fd 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -30,6 +30,10 @@ * Handle an error without reporting it (just for completeness): * error_free(err); * + * Assert that an expected error occurred, but clean it up without + * reporting it (primarily useful in testsuites): + * error_free_or_abort(&err); + * * Pass an existing error to the caller: * error_propagate(errp, err); * where Error **errp is a parameter, by convention the last one. @@ -190,6 +194,11 @@ Error *error_copy(const Error *err); void error_free(Error *err); /* + * Convenience function to assert that *@errp is set, then silently free it. + */ +void error_free_or_abort(Error **errp); + +/* * Convenience function to error_report() and free @err. */ void error_report_err(Error *); diff --git a/include/qapi/qmp/qobject.h b/include/qapi/qmp/qobject.h index c856f553b7..4b96ed5837 100644 --- a/include/qapi/qmp/qobject.h +++ b/include/qapi/qmp/qobject.h @@ -90,6 +90,7 @@ static inline void qobject_incref(QObject *obj) */ static inline void qobject_decref(QObject *obj) { + assert(!obj || obj->refcnt); if (obj && --obj->refcnt == 0) { assert(obj->type != NULL); assert(obj->type->destroy != NULL); |