This is less fragile, and more in keeping with the usual style of
initialising everything to 0 and freeing things unconditionally.
Correspondingly, remove the tests at the call sites.
Apropos of
c1f3f174. No overall functional change.
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
(cherry picked from commit
6ed09e37722f601661fff42f80279a41773c574e)
(cherry picked from commit
f66f746df7983fac7f63b38b1b6bde11a791f1ed)
void libxl__poller_put(libxl_ctx *ctx, libxl__poller *p)
{
+ if (!p) return;
LIBXL_LIST_INSERT_HEAD(&ctx->pollers_idle, p, entry);
}
AO_GC;
if (!ao) return;
LOG(DEBUG,"ao %p: destroy",ao);
- if (ao->poller) libxl__poller_put(ctx, ao->poller);
+ libxl__poller_put(ctx, ao->poller);
ao->magic = LIBXL__AO_MAGIC_DESTROYED;
libxl__free_all(&ao->gc);
free(ao);
* away again afterwards. _get can fail, returning NULL.
* ctx must be locked. */
_hidden libxl__poller *libxl__poller_get(libxl_ctx *ctx);
-_hidden void libxl__poller_put(libxl_ctx *ctx, libxl__poller *p);
+_hidden void libxl__poller_put(libxl_ctx*, libxl__poller *p /* may be NULL */);
/* Notifies whoever is polling using p that they should wake up.
* ctx must be locked. */