%(proto)s
{
QDict *qmp;
- Error *local_err = NULL;
+ Error *err = NULL;
QMPEventFuncEmit emit;
''',
proto=gen_event_send_proto(name, arg_type))
g_assert(v);
/* Fake visit, as if all members are under a structure */
- visit_start_struct(v, NULL, "", "%(name)s", 0, &local_err);
- if (local_err) {
- goto clean;
- }
-
+ visit_start_struct(v, NULL, "", "%(name)s", 0, &err);
''',
name=name)
+ ret += gen_err_check()
for memb in arg_type.members:
if memb.optional:
cast = ''
ret += mcgen('''
- visit_type_%(c_type)s(v, %(cast)s&%(c_name)s, "%(name)s", &local_err);
- if (local_err) {
- goto clean;
- }
+ visit_type_%(c_type)s(v, %(cast)s&%(c_name)s, "%(name)s", &err);
''',
cast=cast,
c_name=c_name(memb.name),
c_type=memb.type.c_name(),
name=memb.name)
+ ret += gen_err_check()
if memb.optional:
pop_indent()
''')
ret += mcgen('''
-
- visit_end_struct(v, &local_err);
- if (local_err) {
- goto clean;
+ visit_end_struct(v, &err);
+ if (err) {
+ goto out;
}
obj = qmp_output_get_qobject(qov);
''')
ret += mcgen('''
- emit(%(c_enum)s, qmp, &local_err);
+ emit(%(c_enum)s, qmp, &err);
''',
c_enum=c_enum_const(event_enum_name, name))
if arg_type and arg_type.members:
ret += mcgen('''
- clean:
+out:
qmp_output_visitor_cleanup(qov);
''')
ret += mcgen('''
- error_propagate(errp, local_err);
+ error_propagate(errp, err);
QDECREF(qmp);
}
''')