“bbceb72398f23902fae2f011c2b6c7f2a8b7b8e3”上不存在“paddle/fluid/operators/fetch_op.cc”
提交 89d724b1 编写于 作者: X Xu Yandong 提交者: Michal Privoznik

object_event: reference state only if virEventAddTimeout succeeded

When registering new callback for an event, the event loop timer
must be created and registered. The timer has domain event state
object as an opaque argument which must be ref()-ed but only if
the timer was being created and registered successfully. We must
not ref it every time the virObjectEventStateRegisterID() runs.
Signed-off-by: NXu Yandong <xuyandong2@huawei.com>
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
上级 b030f35e
...@@ -891,19 +891,20 @@ virObjectEventStateRegisterID(virConnectPtr conn, ...@@ -891,19 +891,20 @@ virObjectEventStateRegisterID(virConnectPtr conn,
virObjectLock(state); virObjectLock(state);
if ((state->callbacks->count == 0) && if ((state->callbacks->count == 0) &&
(state->timer == -1) && (state->timer == -1)) {
(state->timer = virEventAddTimeout(-1, if ((state->timer = virEventAddTimeout(-1,
virObjectEventTimer, virObjectEventTimer,
state, state,
virObjectFreeCallback)) < 0) { virObjectFreeCallback)) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("could not initialize domain event timer")); _("could not initialize domain event timer"));
goto cleanup; goto cleanup;
} }
/* event loop has one reference, but we need one more for the /* event loop has one reference, but we need one more for the
* timer's opaque argument */ * timer's opaque argument */
virObjectRef(state); virObjectRef(state);
}
ret = virObjectEventCallbackListAddID(conn, state->callbacks, ret = virObjectEventCallbackListAddID(conn, state->callbacks,
key, filter, filter_opaque, key, filter, filter_opaque,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册