qapi: Disallow qmp_marshal_FOO(NULL, ...)
For QMP commands without arguments, gen_marshal() laboriously generates a qmp_marshal_FOO() that copes with null @args. Turns there's just one caller that passes null instead of an empty QDict. Adjust that caller, and simplify gen_marshal(). Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20200424084338.26803-15-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
ea097dff0f
commit
2061487bdb
@ -1579,8 +1579,8 @@ Example:
|
||||
void qmp_marshal_my_command(QDict *args, QObject **ret, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
UserDefOne *retval;
|
||||
Visitor *v;
|
||||
UserDefOne *retval;
|
||||
q_obj_my_command_arg arg = {0};
|
||||
|
||||
v = qobject_input_visitor_new(QOBJECT(args));
|
||||
|
@ -322,9 +322,12 @@ static QDict *qmp_greeting(MonitorQMP *mon)
|
||||
{
|
||||
QList *cap_list = qlist_new();
|
||||
QObject *ver = NULL;
|
||||
QDict *args;
|
||||
QMPCapability cap;
|
||||
|
||||
qmp_marshal_query_version(NULL, &ver, NULL);
|
||||
args = qdict_new();
|
||||
qmp_marshal_query_version(args, &ver, NULL);
|
||||
qobject_unref(args);
|
||||
|
||||
for (cap = 0; cap < QMP_CAPABILITY__MAX; cap++) {
|
||||
if (mon->capab_offered[cap]) {
|
||||
|
@ -104,6 +104,7 @@ def gen_marshal(name, arg_type, boxed, ret_type):
|
||||
%(proto)s
|
||||
{
|
||||
Error *err = NULL;
|
||||
Visitor *v;
|
||||
''',
|
||||
proto=build_marshal_proto(name))
|
||||
|
||||
@ -117,21 +118,14 @@ def gen_marshal(name, arg_type, boxed, ret_type):
|
||||
visit_members = ('visit_type_%s_members(v, &arg, &err);'
|
||||
% arg_type.c_name())
|
||||
ret += mcgen('''
|
||||
Visitor *v;
|
||||
%(c_name)s arg = {0};
|
||||
|
||||
''',
|
||||
c_name=arg_type.c_name())
|
||||
else:
|
||||
visit_members = ''
|
||||
ret += mcgen('''
|
||||
Visitor *v = NULL;
|
||||
|
||||
if (args) {
|
||||
''')
|
||||
push_indent()
|
||||
|
||||
ret += mcgen('''
|
||||
|
||||
v = qobject_input_visitor_new(QOBJECT(args));
|
||||
visit_start_struct(v, NULL, NULL, 0, &err);
|
||||
if (err) {
|
||||
@ -148,12 +142,6 @@ def gen_marshal(name, arg_type, boxed, ret_type):
|
||||
''',
|
||||
visit_members=visit_members)
|
||||
|
||||
if not have_args:
|
||||
pop_indent()
|
||||
ret += mcgen('''
|
||||
}
|
||||
''')
|
||||
|
||||
ret += gen_call(name, arg_type, boxed, ret_type)
|
||||
|
||||
ret += mcgen('''
|
||||
@ -168,10 +156,6 @@ out:
|
||||
% arg_type.c_name())
|
||||
else:
|
||||
visit_members = ''
|
||||
ret += mcgen('''
|
||||
if (args) {
|
||||
''')
|
||||
push_indent()
|
||||
|
||||
ret += mcgen('''
|
||||
v = qapi_dealloc_visitor_new();
|
||||
@ -182,12 +166,6 @@ out:
|
||||
''',
|
||||
visit_members=visit_members)
|
||||
|
||||
if not have_args:
|
||||
pop_indent()
|
||||
ret += mcgen('''
|
||||
}
|
||||
''')
|
||||
|
||||
ret += mcgen('''
|
||||
}
|
||||
''')
|
||||
|
Loading…
Reference in New Issue
Block a user