Callers should not free death events provided by libxl_evdisable_FOO().
---
src/libxl/libxl_driver.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 94a78e2..61ceae1 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -270,7 +270,6 @@ libxlDomainObjPrivateAlloc(void)
return NULL;
libxl_ctx_alloc(&priv->ctx, LIBXL_VERSION, 0, libxl_driver->logger);
- priv->deathW = NULL;
libxl_osevent_register_hooks(priv->ctx, &libxl_event_callbacks, priv);
return priv;
@@ -281,10 +280,8 @@ libxlDomainObjPrivateFree(void *data)
{
libxlDomainObjPrivatePtr priv = data;
- if (priv->deathW) {
+ if (priv->deathW)
libxl_evdisable_domain_death(priv->ctx, priv->deathW);
- VIR_FREE(priv->deathW);
- }
libxl_ctx_free(priv->ctx);
VIR_FREE(priv);
@@ -604,9 +601,10 @@ libxlCreateDomEvents(virDomainObjPtr vm)
return 0;
error:
- if (priv->deathW)
+ if (priv->deathW) {
libxl_evdisable_domain_death(priv->ctx, priv->deathW);
- VIR_FREE(priv->deathW);
+ priv->deathW = NULL;
+ }
return -1;
}
--
1.8.0.1