]> git.proxmox.com Git - qemu.git/commit - error.h
qapi: fix error propagation
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 17 Jul 2012 14:17:04 +0000 (16:17 +0200)
committerStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Mon, 23 Jul 2012 10:55:17 +0000 (11:55 +0100)
commitd195325b05199038b5907fa791729425b9720d21
treebac66242283f01f0e755b4a7d175755f96476332
parent837c36e7871a74dda78d2ca89d9027b19553a871
qapi: fix error propagation

Don't overwrite / leak previously set errors.
Make traversal cope with missing mandatory sub-structs.
Don't try to end a container that could not be started.

v1->v2:
- unchanged

v2->v3:
- instead of examining, assert that we never overwrite errors with
  error_set()
- allow visitors to set a NULL struct pointer successfully, so traversal
  of incomplete objects can continue
- check for a NULL "obj" before accessing "(*obj)->has_XXX" (this is not a
  typo, "obj != NULL" implies "*obj != NULL" here)
- fix start_struct / end_struct balance for unions as well

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
docs/qapi-code-gen.txt
error.c
error.h
qapi/qapi-visit-core.c
scripts/qapi-visit.py
tests/test-qmp-input-visitor.c