Max Reitz <[email protected]> writes: > On 01.04.2016 17:57, Eric Blake wrote: >> Commit 7836857 introduced a memory leak due to invalid use of >> Error vs. visit_type_end(). If visiting the intermediate >> members fails, we clear the error and unconditionally use >> visit_end_struct() on the same error object; but if that >> cleanup succeeds, we then skip the qapi_free call. > > It's not really a memleak. Due to skipping those conditional branches > after the "out" label, a non-null value will be returned. In order to > determine whether the function call failed, the callers of these > functions do not use the errp value but the return value. Therefore, > they will think the call succeeded when actually it did not.
Please amend the commit message accordingly. >> >> Until a later patch adds visit_check_struct(), the only safe >> approach is to use two separate error objects. >> >> Signed-off-by: Eric Blake <[email protected]> >> --- >> block/crypto.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) > > Anyway, thanks, applied to my block branch: > > https://github.com/XanClic/qemu/commits/block > > Max
