diff options
author | 2010-11-22 12:27:07 -0700 | |
---|---|---|
committer | 2010-11-23 08:43:00 -0700 | |
commit | 149c49213799bc0fb1b99ccd3310a932b512bc07 (patch) | |
tree | a85a7bebce3e73ee27fb8d8dddbea974a86a0849 | |
parent | Rename 'remove' param to 'toremove' to avoid clash with stdio.h (diff) | |
download | libvirt-149c49213799bc0fb1b99ccd3310a932b512bc07.tar.gz libvirt-149c49213799bc0fb1b99ccd3310a932b512bc07.tar.bz2 libvirt-149c49213799bc0fb1b99ccd3310a932b512bc07.zip |
libvirtd: fix bug when shrinking number of clients
* daemon/libvirtd.c (qemudRunLoop): Pass allocation size, not
current count, to VIR_SHRINK_N.
* docs/hacking.html.in: Update doc example.
* HACKING: Regenerate.
-rw-r--r-- | HACKING | 5 | ||||
-rw-r--r-- | daemon/libvirtd.c | 3 | ||||
-rw-r--r-- | docs/hacking.html.in | 5 |
3 files changed, 8 insertions, 5 deletions
@@ -347,13 +347,14 @@ scales better, but requires tracking allocation separately from usage) -- To trim an array of domains to have one less element: +- To trim an array of domains from its allocated size down to the actual used +size: virDomainPtr domains; size_t ndomains = x; size_t ndomains_max = y; - VIR_SHRINK_N(domains, ndomains_max, 1); + VIR_SHRINK_N(domains, ndomains_max, ndomains_max - ndomains); diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index 2eb237413..66f138861 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -2362,7 +2362,8 @@ static void *qemudRunLoop(void *opaque) { server->clients + i + 1, sizeof (*server->clients) * (server->nclients - i)); - VIR_SHRINK_N(server->clients, server->nclients, 0); + VIR_SHRINK_N(server->clients, server->nclients_max, + server->nclients_max - server->nclients); goto reprocess; } } diff --git a/docs/hacking.html.in b/docs/hacking.html.in index 890692f05..ac16f411b 100644 --- a/docs/hacking.html.in +++ b/docs/hacking.html.in @@ -426,14 +426,15 @@ </pre> </li> - <li><p>To trim an array of domains to have one less element:</p> + <li><p>To trim an array of domains from its allocated size down + to the actual used size:</p> <pre> virDomainPtr domains; size_t ndomains = x; size_t ndomains_max = y; - VIR_SHRINK_N(domains, ndomains_max, 1); + VIR_SHRINK_N(domains, ndomains_max, ndomains_max - ndomains); </pre></li> <li><p>To free an array of domains:</p> |