diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 9feacb12ba..c62c55e7f1 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -4002,8 +4002,7 @@ libxlDomainGetNumaParameters(virDomainPtr dom, } } - nodeset = virBitmapFormat(nodes); - if (!nodeset && VIR_STRDUP(nodeset, "") < 0) + if (!(nodeset = virBitmapFormat(nodes))) goto cleanup; if (virTypedParameterAssign(param, VIR_DOMAIN_NUMA_NODESET, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 3a7622ae88..578c2237b3 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -8914,7 +8914,7 @@ qemuDomainGetNumaParameters(virDomainPtr dom, case 1: /* fill numa nodeset here */ if (flags & VIR_DOMAIN_AFFECT_CONFIG) { nodeset = virBitmapFormat(persistentDef->numatune.memory.nodemask); - if (!nodeset && VIR_STRDUP(nodeset, "") < 0) + if (!nodeset) goto cleanup; } else { if (virCgroupGetCpusetMems(priv->cgroup, &nodeset) < 0) diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c index e44dce60d5..8c9983cc37 100644 --- a/src/util/virbitmap.c +++ b/src/util/virbitmap.c @@ -218,6 +218,8 @@ char *virBitmapString(virBitmapPtr bitmap) * * See virBitmapParse for the format of @str. * + * If bitmap is NULL or it has no bits set, an empty string is returned. + * * Returns the string on success or NULL otherwise. Caller should call * VIR_FREE to free the string. */ @@ -227,11 +229,7 @@ char *virBitmapFormat(virBitmapPtr bitmap) bool first = true; int start, cur, prev; - if (!bitmap) - return NULL; - - cur = virBitmapNextSetBit(bitmap, -1); - if (cur < 0) { + if (!bitmap || (cur = virBitmapNextSetBit(bitmap, -1)) < 0) { char *ret; ignore_value(VIR_STRDUP(ret, "")); return ret; diff --git a/src/util/virbitmap.h b/src/util/virbitmap.h index b682523fbe..6573aa26be 100644 --- a/src/util/virbitmap.h +++ b/src/util/virbitmap.h @@ -69,8 +69,7 @@ int virBitmapGetBit(virBitmapPtr bitmap, size_t b, bool *result) char *virBitmapString(virBitmapPtr bitmap) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; -char *virBitmapFormat(virBitmapPtr bitmap) - ATTRIBUTE_NONNULL(1); +char *virBitmapFormat(virBitmapPtr bitmap); int virBitmapParse(const char *str, char sep,