On 4/23/20 11:00 AM, Markus Armbruster wrote:
An alternate type's visit_type_FOO() fails when it runs into an
invalid ->type. If it's an input visit, we then need to free the the
object we got from visit_start_alternate(). We do that with
qapi_free_FOO(), which uses the dealloc visitor.
Trouble is that object is in a bad state: its ->type is invalid. So
the dealloc visitor will run into the same error again, and the error
recovery skips deallocating the alternate's (invalid) alternative.
This is a roundabout way to g_free() the alternate.
Simplify: replace the qapi_free_FOO() by g_free().
Signed-off-by: Markus Armbruster <arm...@redhat.com>
---
scripts/qapi/visit.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Required looking at what gets generated into qapi_free_FOO() as well as
when visit_start_alternate() can fail, but makes sense.
Reviewed-by: Eric Blake <ebl...@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org