mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
Fixed couple of memory leaks wrt to virXXXDestroy APIs, and clarify docs to match reality
This commit is contained in:
parent
922fbeb8b7
commit
e866e302f8
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
||||
Wed May 21 16:24:29 EST 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
Fix up misc memory leaks / incorrect docs (Cole Robinson)
|
||||
* qemud/remote.c: Free the virDomainPtr object in the
|
||||
virDomainDestroy handler to avoid leak
|
||||
* src/hash.c: Added more ref count debug
|
||||
* src/libvirt.c: Clarified docs on virXXXDestroy to
|
||||
match reality
|
||||
* src/remote_internal.c: Free virDomain/Network objects
|
||||
after dispatching RPC error
|
||||
* src/virsh.c: Added some more virDomainFree calls
|
||||
|
||||
Wed May 21 15:42:29 EST 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* python/generator.py: Don't free the underlying virDomainPtr
|
||||
|
@ -940,9 +940,11 @@ remoteDispatchDomainDestroy (struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
return -2;
|
||||
}
|
||||
|
||||
if (virDomainDestroy (dom) == -1)
|
||||
if (virDomainDestroy (dom) == -1) {
|
||||
virDomainFree(dom);
|
||||
return -1;
|
||||
/* No need to free dom - destroy does it for us */
|
||||
}
|
||||
virDomainFree(dom);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -842,6 +842,9 @@ __virGetDomain(virConnectPtr conn, const char *name, const unsigned char *uuid)
|
||||
goto error;
|
||||
}
|
||||
conn->refs++;
|
||||
DEBUG("New hash entry %p", ret);
|
||||
} else {
|
||||
DEBUG("Existing hash entry %p: refs now %d", ret, ret->refs+1);
|
||||
}
|
||||
ret->refs++;
|
||||
pthread_mutex_unlock(&conn->lock);
|
||||
|
@ -1390,10 +1390,9 @@ virDomainLookupByName(virConnectPtr conn, const char *name)
|
||||
* @domain: a domain object
|
||||
*
|
||||
* Destroy the domain object. The running instance is shutdown if not down
|
||||
* already and all resources used by it are given back to the hypervisor.
|
||||
* The data structure is freed and should not be used thereafter if the
|
||||
* call does not return an error.
|
||||
* This function may requires privileged access
|
||||
* already and all resources used by it are given back to the hypervisor. This
|
||||
* does not free the associated virDomainPtr object.
|
||||
* This function may require privileged access
|
||||
*
|
||||
* Returns 0 in case of success and -1 in case of failure.
|
||||
*/
|
||||
@ -3502,10 +3501,9 @@ virNetworkCreate(virNetworkPtr network)
|
||||
* @network: a network object
|
||||
*
|
||||
* Destroy the network object. The running instance is shutdown if not down
|
||||
* already and all resources used by it are given back to the hypervisor.
|
||||
* The data structure is freed and should not be used thereafter if the
|
||||
* call does not return an error.
|
||||
* This function may requires privileged access
|
||||
* already and all resources used by it are given back to the hypervisor. This
|
||||
* does not free the associated virNetworkPtr object.
|
||||
* This function may require privileged access
|
||||
*
|
||||
* Returns 0 in case of success and -1 in case of failure.
|
||||
*/
|
||||
|
@ -4606,6 +4606,10 @@ server_error (virConnectPtr conn, remote_error *err)
|
||||
err->str3 ? *err->str3 : NULL,
|
||||
err->int1, err->int2,
|
||||
"%s", err->message ? *err->message : NULL);
|
||||
if (dom)
|
||||
virDomainFree(dom);
|
||||
if (net)
|
||||
virNetworkFree(net);
|
||||
}
|
||||
|
||||
/* get_nonnull_domain and get_nonnull_network turn an on-wire
|
||||
|
@ -1468,9 +1468,9 @@ cmdDestroy(vshControl * ctl, vshCmd * cmd)
|
||||
} else {
|
||||
vshError(ctl, FALSE, _("Failed to destroy domain %s"), name);
|
||||
ret = FALSE;
|
||||
virDomainFree(dom);
|
||||
}
|
||||
|
||||
virDomainFree(dom);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2433,9 +2433,9 @@ cmdNetworkDestroy(vshControl * ctl, vshCmd * cmd)
|
||||
} else {
|
||||
vshError(ctl, FALSE, _("Failed to destroy network %s"), name);
|
||||
ret = FALSE;
|
||||
virNetworkFree(network);
|
||||
}
|
||||
|
||||
virNetworkFree(network);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -3161,9 +3161,9 @@ cmdPoolDestroy(vshControl * ctl, vshCmd * cmd)
|
||||
} else {
|
||||
vshError(ctl, FALSE, _("Failed to destroy pool %s"), name);
|
||||
ret = FALSE;
|
||||
virStoragePoolFree(pool);
|
||||
}
|
||||
|
||||
virStoragePoolFree(pool);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user