Commit 05f7274c authored by Markus Armbruster's avatar Markus Armbruster
Browse files

qmp: Always free QMPRequest with qmp_request_free()



monitor_qmp_dispatch_one() frees a QMPRequest manually, because it
needs to keep a reference to ->id.  Premature optimization.  Take an
additional reference so we can use qmp_request_free().

Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <20180703085358.13941-15-armbru@redhat.com>
parent 45434ba4
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -4182,8 +4182,6 @@ static void monitor_qmp_dispatch_one(QMPRequest *req_obj)
    id = req_obj->id;
    need_resume = req_obj->need_resume;

    g_free(req_obj);

    old_mon = cur_mon;
    cur_mon = mon;

@@ -4192,14 +4190,14 @@ static void monitor_qmp_dispatch_one(QMPRequest *req_obj)
    cur_mon = old_mon;

    /* Respond if necessary */
    monitor_qmp_respond(mon, rsp, NULL, id);
    monitor_qmp_respond(mon, rsp, NULL, qobject_ref(id));

    /* This pairs with the monitor_suspend() in handle_qmp_command(). */
    if (need_resume) {
        monitor_resume(mon);
    }

    qobject_unref(req);
    qmp_request_free(req_obj);
}

/*