qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

qapi: Purge error_propagate() from QAPI core

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20200707160613.848843-42-armbru@redhat.com>

+19 -21
+19 -21
qapi/qapi-visit-core.c
··· 39 39 bool visit_start_struct(Visitor *v, const char *name, void **obj, 40 40 size_t size, Error **errp) 41 41 { 42 - Error *err = NULL; 42 + bool ok; 43 43 44 44 trace_visit_start_struct(v, name, obj, size); 45 45 if (obj) { 46 46 assert(size); 47 47 assert(!(v->type & VISITOR_OUTPUT) || *obj); 48 48 } 49 - v->start_struct(v, name, obj, size, &err); 49 + ok = v->start_struct(v, name, obj, size, errp); 50 50 if (obj && (v->type & VISITOR_INPUT)) { 51 - assert(!err != !*obj); 51 + assert(ok != !*obj); 52 52 } 53 - error_propagate(errp, err); 54 - return !err; 53 + return ok; 55 54 } 56 55 57 56 bool visit_check_struct(Visitor *v, Error **errp) ··· 69 68 bool visit_start_list(Visitor *v, const char *name, GenericList **list, 70 69 size_t size, Error **errp) 71 70 { 72 - Error *err = NULL; 71 + bool ok; 73 72 74 73 assert(!list || size >= sizeof(GenericList)); 75 74 trace_visit_start_list(v, name, list, size); 76 - v->start_list(v, name, list, size, &err); 75 + ok = v->start_list(v, name, list, size, errp); 77 76 if (list && (v->type & VISITOR_INPUT)) { 78 - assert(!(err && *list)); 77 + assert(ok || !*list); 79 78 } 80 - error_propagate(errp, err); 81 - return !err; 79 + return ok; 82 80 } 83 81 84 82 GenericList *visit_next_list(Visitor *v, GenericList *tail, size_t size) ··· 104 102 GenericAlternate **obj, size_t size, 105 103 Error **errp) 106 104 { 107 - Error *err = NULL; 105 + bool ok; 108 106 109 107 assert(obj && size >= sizeof(GenericAlternate)); 110 108 assert(!(v->type & VISITOR_OUTPUT) || *obj); 111 109 trace_visit_start_alternate(v, name, obj, size); 112 - if (v->start_alternate) { 113 - v->start_alternate(v, name, obj, size, &err); 110 + if (!v->start_alternate) { 111 + assert(!(v->type & VISITOR_INPUT)); 112 + return true; 114 113 } 114 + ok = v->start_alternate(v, name, obj, size, errp); 115 115 if (v->type & VISITOR_INPUT) { 116 - assert(v->start_alternate && !err != !*obj); 116 + assert(ok != !*obj); 117 117 } 118 - error_propagate(errp, err); 119 - return !err; 118 + return ok; 120 119 } 121 120 122 121 void visit_end_alternate(Visitor *v, void **obj) ··· 309 308 310 309 bool visit_type_str(Visitor *v, const char *name, char **obj, Error **errp) 311 310 { 312 - Error *err = NULL; 311 + bool ok; 313 312 314 313 assert(obj); 315 314 /* TODO: Fix callers to not pass NULL when they mean "", so that we ··· 317 316 assert(!(v->type & VISITOR_OUTPUT) || *obj); 318 317 */ 319 318 trace_visit_type_str(v, name, obj); 320 - v->type_str(v, name, obj, &err); 319 + ok = v->type_str(v, name, obj, errp); 321 320 if (v->type & VISITOR_INPUT) { 322 - assert(!err != !*obj); 321 + assert(ok != !*obj); 323 322 } 324 - error_propagate(errp, err); 325 - return !err; 323 + return ok; 326 324 } 327 325 328 326 bool visit_type_number(Visitor *v, const char *name, double *obj,