aboutsummaryrefslogtreecommitdiff
path: root/include/qapi/visitor-impl.h
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2016-01-29 06:48:47 -0700
committerMarkus Armbruster <armbru@redhat.com>2016-02-08 17:29:55 +0100
commit92b09babc11b60458c28cfe37eaa314de50e6241 (patch)
tree0affd5ca4a85b27834f73a1982ab67a1f91bfe45 /include/qapi/visitor-impl.h
parenta16e3e5c5825c90887a863513916f93eeec16c55 (diff)
qapi: Track all failures between visit_start/stop
Inside the generated code between visit_start_struct() and visit_end_struct(), we were blindly setting the error into the caller's errp parameter. But a future patch to split visit_end_struct() will require that we take action based on whether an error has occurred, which requires us to track all actions through a local err. Rewrite the visits to be more in line with the other generated calls. Generated code changes look like: | visit_start_struct(v, (void **)obj, "Abort", name, sizeof(Abort), &err); |- if (!err) { |- if (*obj) { |- visit_type_Abort_fields(v, obj, errp); |- } |- visit_end_struct(v, &err); |+ if (err) { |+ goto out; | } |+ if (!*obj) { |+ goto out_obj; |+ } |+ visit_type_Abort_fields(v, obj, &err); |+ error_propagate(errp, err); |+ err = NULL; |+out_obj: |+ visit_end_struct(v, &err); |+out: | error_propagate(errp, err); | } Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1454075341-13658-12-git-send-email-eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'include/qapi/visitor-impl.h')
0 files changed, 0 insertions, 0 deletions