From: Christophe de Dinechin <dinechin@redhat.com>
To: qemu-devel@nongnu.org
Subject: Missing qapi_free_Type in error case for qapi generated code?
Date: Tue, 28 Jul 2020 17:26:57 +0200 [thread overview]
Message-ID: <ly4kprhd8e.fsf@redhat.com> (raw)
The qapi generated code for qmp_marshal_query_spice seems to be missing a
resource deallocation for "retval". For example, for SpiceInfo:
#if defined(CONFIG_SPICE)
void qmp_marshal_query_spice(QDict *args, QObject **ret, Error **errp)
{
Error *err = NULL;
bool ok = false;
Visitor *v;
SpiceInfo *retval;
v = qobject_input_visitor_new(QOBJECT(args));
if (!visit_start_struct(v, NULL, NULL, 0, errp)) {
goto out;
}
ok = visit_check_struct(v, errp);
visit_end_struct(v, NULL);
if (!ok) {
goto out;
}
retval = qmp_query_spice(&err);
error_propagate(errp, err);
if (err) {
/* retval not freed here */
/* Missing: qapi_free_SpiceInfo(retval); */
goto out;
}
qmp_marshal_output_SpiceInfo(retval, ret, errp);
out:
visit_free(v);
v = qapi_dealloc_visitor_new();
visit_start_struct(v, NULL, NULL, 0, NULL);
visit_end_struct(v, NULL);
visit_free(v);
}
#endif /* defined(CONFIG_SPICE) */
Questions:
- Is the query code supposed to always return NULL in case of error? In the
case of hmp_info_spice, there is no check for info==NULL, so on the
contrary, it seems to indicate that a non-null result is always expected,
and that function does call qapi_free_SpiceInfo
- If not, is there an existing shortcut to generate the correct deallocation
code for return types that need it? You can't just use
qapi_free_%(c_type)s because that would generate an extra * character,
i.e. I get "SpiceInfo *" and not "SpiceInfo".
- If not, is there any good way to know if the type is a pointer type?
(A quick look in cripts/qapi/types.py does not show anything obvious)
--
Cheers,
Christophe de Dinechin (IRC c3d)
next reply other threads:[~2020-07-28 15:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-28 15:26 Christophe de Dinechin [this message]
2020-07-28 15:44 ` Missing qapi_free_Type in error case for qapi generated code? Eric Blake
2020-07-29 8:34 ` Markus Armbruster
2020-07-29 8:48 ` Christophe de Dinechin
2020-07-29 12:44 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ly4kprhd8e.fsf@redhat.com \
--to=dinechin@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.