aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2020-04-24 10:43:37 +0200
committerMarkus Armbruster <armbru@redhat.com>2020-04-30 07:26:41 +0200
commit2061487bdba7fb9077efc09210224b42fad7d18f (patch)
tree9151306a080f737a074ab6c78994e1bbaf460a9e /scripts
parentea097dff0f011c07202ea7e52a421429e01ef351 (diff)
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>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/qapi/commands.py26
1 files changed, 2 insertions, 24 deletions
diff --git a/scripts/qapi/commands.py b/scripts/qapi/commands.py
index bc30876c88..f545903567 100644
--- a/scripts/qapi/commands.py
+++ b/scripts/qapi/commands.py
@@ -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('''
}
''')