virstring: Unify string list function names

We have couple of functions that operate over NULL terminated
lits of strings. However, our naming sucks:

virStringJoin
virStringFreeList
virStringFreeListCount
virStringArrayHasString
virStringGetFirstWithPrefix

We can do better:

virStringListJoin
virStringListFree
virStringListFreeCount
virStringListHasString
virStringListGetFirstWithPrefix

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Michal Privoznik 2016-11-25 09:18:35 +01:00
parent 0d91565e62
commit c2a5a4e7ea
54 changed files with 200 additions and 196 deletions

View File

@ -5425,7 +5425,7 @@ remoteDispatchConnectGetCPUModelNames(virNetServerPtr server ATTRIBUTE_UNUSED,
cleanup:
if (rv < 0)
virNetMessageSaveError(rerr);
virStringFreeList(models);
virStringListFree(models);
return rv;
}

View File

@ -323,7 +323,7 @@ virAppendBootloaderArgs(virCommandPtr cmd, virDomainDefPtr def)
/* XXX: Handle quoted? */
blargs = virStringSplit(def->os.bootloaderArgs, " ", 0);
virCommandAddArgSet(cmd, (const char * const *)blargs);
virStringFreeList(blargs);
virStringListFree(blargs);
}
static virCommandPtr

View File

@ -246,7 +246,7 @@ bhyveCommandLineToArgv(const char *nativeConfig,
} else {
/* To prevent a use-after-free here, only free the argument list
* when it is definitely not going to be used */
virStringFreeList(arglist);
virStringListFree(arglist);
}
}
@ -254,13 +254,13 @@ bhyveCommandLineToArgv(const char *nativeConfig,
if (!(*bhyve_argv = _bhyve_argv))
goto error;
virStringFreeList(lines);
virStringListFree(lines);
return 0;
error:
VIR_FREE(_loader_argv);
VIR_FREE(_bhyve_argv);
virStringFreeList(lines);
virStringListFree(lines);
return -1;
}
@ -804,7 +804,7 @@ bhyveParseBhyveLoadCommandLine(virDomainDefPtr def,
if (VIR_STRDUP(def->os.bootloader, argv[0]) < 0)
goto error;
def->os.bootloaderArgs = virStringJoin((const char**) &argv[1], " ");
def->os.bootloaderArgs = virStringListJoin((const char**) &argv[1], " ");
}
if (argc != parser->optind) {
@ -841,7 +841,7 @@ bhyveParseCustomLoaderCommandLine(virDomainDefPtr def,
if (VIR_STRDUP(def->os.bootloader, argv[0]) < 0)
goto error;
def->os.bootloaderArgs = virStringJoin((const char**) &argv[1], " ");
def->os.bootloaderArgs = virStringListJoin((const char**) &argv[1], " ");
return 0;
error:
@ -893,8 +893,8 @@ bhyveParseCommandLineString(const char* nativeConfig,
}
cleanup:
virStringFreeList(loader_argv);
virStringFreeList(bhyve_argv);
virStringListFree(loader_argv);
virStringListFree(bhyve_argv);
return def;
error:
virDomainDefFree(def);

View File

@ -185,7 +185,7 @@ virDomainCapsCPUModelsFilter(virDomainCapsCPUModelsPtr old,
return NULL;
for (i = 0; i < old->nmodels; i++) {
if (models && !virStringArrayHasString(models, old->models[i].name))
if (models && !virStringListHasString(models, old->models[i].name))
continue;
if (virDomainCapsCPUModelsAdd(cpuModels,

View File

@ -888,7 +888,7 @@ virCPUppc64DriverGetModels(char ***models)
error:
if (models) {
virStringFreeList(*models);
virStringListFree(*models);
*models = NULL;
}
goto cleanup;

View File

@ -2675,7 +2675,7 @@ virCPUx86GetModels(char ***models)
error:
if (models) {
virStringFreeList(*models);
virStringListFree(*models);
*models = NULL;
}
return -1;

View File

@ -2453,16 +2453,16 @@ virSkipSpacesAndBackslash;
virSkipSpacesBackwards;
virStrcpy;
virStrdup;
virStringArrayHasString;
virStringBufferIsPrintable;
virStringEncodeBase64;
virStringFreeList;
virStringFreeListCount;
virStringGetFirstWithPrefix;
virStringHasControlChars;
virStringIsEmpty;
virStringIsPrintable;
virStringJoin;
virStringListFree;
virStringListFreeCount;
virStringListGetFirstWithPrefix;
virStringListHasString;
virStringListJoin;
virStringListLength;
virStringReplace;
virStringSearch;

View File

@ -607,7 +607,7 @@ static int lxcContainerUnmountSubtree(const char *prefix,
ret = 0;
cleanup:
virStringFreeList(mounts);
virStringListFree(mounts);
return ret;
}

View File

@ -129,13 +129,13 @@ static char ** lxcStringSplit(const char *string)
}
VIR_FREE(tmp);
virStringFreeList(parts);
virStringListFree(parts);
return result;
error:
VIR_FREE(tmp);
virStringFreeList(parts);
virStringFreeList(result);
virStringListFree(parts);
virStringListFree(result);
return NULL;
}
@ -160,13 +160,13 @@ lxcParseFstabLine(char *fstabLine)
VIR_STRDUP(fstab->options, parts[3]) < 0)
goto error;
virStringFreeList(parts);
virStringListFree(parts);
return fstab;
error:
lxcFstabFree(fstab);
virStringFreeList(parts);
virStringListFree(parts);
return NULL;
}
@ -299,7 +299,7 @@ lxcAddFstabLine(virDomainDefPtr def, lxcFstabPtr fstab)
type = VIR_DOMAIN_FS_TYPE_BLOCK;
/* Do we have ro in options? */
readonly = virStringArrayHasString((const char **) options, "ro");
readonly = virStringListHasString((const char **) options, "ro");
if (lxcAddFSDef(def, type, src, dst, readonly, usage) < 0)
goto cleanup;
@ -308,7 +308,7 @@ lxcAddFstabLine(virDomainDefPtr def, lxcFstabPtr fstab)
cleanup:
VIR_FREE(dst);
virStringFreeList(options);
virStringListFree(options);
return ret;
}
@ -618,12 +618,12 @@ lxcNetworkWalkCallback(const char *name, virConfValuePtr value, void *data)
virReportError(VIR_ERR_INVALID_ARG,
_("Invalid CIDR address: '%s'"), value->str);
virStringFreeList(ipparts);
virStringListFree(ipparts);
VIR_FREE(ip);
return -1;
}
virStringFreeList(ipparts);
virStringListFree(ipparts);
if (VIR_APPEND_ELEMENT(parseData->ips, parseData->nips, ip) < 0) {
VIR_FREE(ip);
@ -943,7 +943,7 @@ lxcBlkioDeviceWalkCallback(const char *name, virConfValuePtr value, void *data)
ret = 0;
cleanup:
virStringFreeList(parts);
virStringListFree(parts);
VIR_FREE(path);
return ret;
@ -982,13 +982,13 @@ lxcSetCapDrop(virDomainDefPtr def, virConfPtr properties)
for (i = 0; i < VIR_DOMAIN_CAPS_FEATURE_LAST; i++) {
capString = virDomainCapsFeatureTypeToString(i);
if (toDrop != NULL &&
virStringArrayHasString((const char **) toDrop, capString))
virStringListHasString((const char **) toDrop, capString))
def->caps_features[i] = VIR_TRISTATE_SWITCH_OFF;
}
def->features[VIR_DOMAIN_FEATURE_CAPABILITIES] = VIR_DOMAIN_CAPABILITIES_POLICY_ALLOW;
virStringFreeList(toDrop);
virStringListFree(toDrop);
}
virDomainDefPtr

View File

@ -151,7 +151,7 @@ openvzParseBarrierLimit(const char* value,
ret = 0;
error:
virStringFreeListCount(tmp, ntmp);
virStringListFreeCount(tmp, ntmp);
return ret;
}

View File

@ -2115,7 +2115,7 @@ qemuAgentGetInterfaces(qemuAgentPtr mon,
}
/* Has to be freed for each interface. */
virStringFreeList(ifname);
virStringListFree(ifname);
/* as well as IP address which - moreover -
* can be presented multiple times */
@ -2201,7 +2201,7 @@ qemuAgentGetInterfaces(qemuAgentPtr mon,
virDomainInterfaceFree(ifaces_ret[i]);
}
VIR_FREE(ifaces_ret);
virStringFreeList(ifname);
virStringListFree(ifname);
goto cleanup;
}

View File

@ -1842,7 +1842,7 @@ virQEMUCapsProcessProps(virQEMUCapsPtr qemuCaps,
for (j = 0; j < nvalues; j++) {
if (STREQ(values[j], props[i].prop)) {
if (virStringArrayHasString(props[i].objects, object))
if (virStringListHasString(props[i].objects, object))
virQEMUCapsSet(qemuCaps, props[i].flag);
break;
}
@ -2369,7 +2369,7 @@ virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemuCaps,
return 0;
error:
virStringFreeListCount(models, i);
virStringListFreeCount(models, i);
return -1;
}
@ -2777,12 +2777,12 @@ virQEMUCapsProbeQMPTPM(virQEMUCapsPtr qemuCaps,
for (i = 0; i < ARRAY_CARDINALITY(virQEMUCapsTPMModelsToCaps); i++) {
const char *needle = virDomainTPMModelTypeToString(
virQEMUCapsTPMModelsToCaps[i].type);
if (virStringArrayHasString((const char **) entries, needle))
if (virStringListHasString((const char **) entries, needle))
virQEMUCapsSet(qemuCaps,
virQEMUCapsTPMModelsToCaps[i].caps);
}
}
virStringFreeList(entries);
virStringListFree(entries);
if ((nentries = qemuMonitorGetTPMTypes(mon, &entries)) < 0)
return -1;
@ -2791,11 +2791,11 @@ virQEMUCapsProbeQMPTPM(virQEMUCapsPtr qemuCaps,
for (i = 0; i < ARRAY_CARDINALITY(virQEMUCapsTPMTypesToCaps); i++) {
const char *needle = virDomainTPMBackendTypeToString(
virQEMUCapsTPMTypesToCaps[i].type);
if (virStringArrayHasString((const char **) entries, needle))
if (virStringListHasString((const char **) entries, needle))
virQEMUCapsSet(qemuCaps, virQEMUCapsTPMTypesToCaps[i].caps);
}
}
virStringFreeList(entries);
virStringListFree(entries);
return 0;
}
@ -2887,7 +2887,7 @@ virQEMUCapsProbeQMPCommandLine(virQEMUCapsPtr qemuCaps,
break;
}
}
virStringFreeList(values);
virStringListFree(values);
}
return 0;
@ -3849,13 +3849,13 @@ virQEMUCapsQMPSchemaGetByPath(const char *query,
if (!*elems) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("malformed query string"));
virStringFreeList(elems);
virStringListFree(elems);
return -1;
}
*entry = virQEMUCapsQMPSchemaTraverse(*elems, elems + 1, schema);
virStringFreeList(elems);
virStringListFree(elems);
return 0;
}
@ -4644,7 +4644,7 @@ virQEMUCapsFillDomainCPUCaps(virCapsPtr caps,
if (virCPUGetModels(domCaps->arch, &models) >= 0) {
filtered = virDomainCapsCPUModelsFilter(qemuCaps->cpuDefinitions,
(const char **) models);
virStringFreeList(models);
virStringListFree(models);
}
domCaps->cpu.custom = filtered;
}

View File

@ -350,7 +350,7 @@ static void virQEMUDriverConfigDispose(void *obj)
virQEMUDriverConfigPtr cfg = obj;
virStringFreeList(cfg->cgroupDeviceACL);
virStringListFree(cfg->cgroupDeviceACL);
VIR_FREE(cfg->configBaseDir);
VIR_FREE(cfg->configDir);
@ -392,7 +392,7 @@ static void virQEMUDriverConfigDispose(void *obj)
VIR_FREE(cfg->dumpImageFormat);
VIR_FREE(cfg->autoDumpPath);
virStringFreeList(cfg->securityDriverNames);
virStringListFree(cfg->securityDriverNames);
VIR_FREE(cfg->lockManagerName);
@ -801,9 +801,9 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
ret = 0;
cleanup:
virStringFreeList(controllers);
virStringFreeList(hugetlbfs);
virStringFreeList(nvram);
virStringListFree(controllers);
virStringListFree(hugetlbfs);
virStringListFree(nvram);
VIR_FREE(corestr);
VIR_FREE(user);
VIR_FREE(group);

View File

@ -1549,7 +1549,7 @@ qemuDomainObjPrivateFree(void *data)
VIR_FREE(priv->lockState);
VIR_FREE(priv->origname);
virStringFreeList(priv->qemuDevices);
virStringListFree(priv->qemuDevices);
virChrdevFree(priv->devs);
/* This should never be non-NULL if we get here, but just in case... */
@ -1963,7 +1963,7 @@ qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt,
priv->monConfig = NULL;
VIR_FREE(nodes);
VIR_FREE(tmp);
virStringFreeList(priv->qemuDevices);
virStringListFree(priv->qemuDevices);
priv->qemuDevices = NULL;
virObjectUnref(qemuCaps);
virObjectUnref(caps);
@ -5263,7 +5263,7 @@ qemuDomainUpdateDeviceList(virQEMUDriverPtr driver,
if (rc < 0)
return -1;
virStringFreeList(priv->qemuDevices);
virStringListFree(priv->qemuDevices);
priv->qemuDevices = aliases;
return 0;
}

View File

@ -1383,7 +1383,7 @@ qemuGetSchedInfo(unsigned long long *cpuWait,
cleanup:
VIR_FREE(data);
VIR_FREE(proc);
virStringFreeList(lines);
virStringListFree(lines);
return ret;
}

View File

@ -4987,7 +4987,7 @@ int qemuMonitorJSONGetCommands(qemuMonitorPtr mon,
cleanup:
virStringFreeList(commandlist);
virStringListFree(commandlist);
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;
@ -5051,7 +5051,7 @@ int qemuMonitorJSONGetEvents(qemuMonitorPtr mon,
eventlist = NULL;
cleanup:
virStringFreeList(eventlist);
virStringListFree(eventlist);
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;
@ -5173,7 +5173,7 @@ qemuMonitorJSONGetCommandLineOptionParameters(qemuMonitorPtr mon,
if (!qemuMonitorGetOptions(mon))
qemuMonitorSetOptions(mon, virJSONValueNewArray());
virStringFreeList(paramlist);
virStringListFree(paramlist);
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;
@ -5276,7 +5276,7 @@ int qemuMonitorJSONGetObjectTypes(qemuMonitorPtr mon,
typelist = NULL;
cleanup:
virStringFreeList(typelist);
virStringListFree(typelist);
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;
@ -5577,7 +5577,7 @@ int qemuMonitorJSONGetObjectProps(qemuMonitorPtr mon,
proplist = NULL;
cleanup:
virStringFreeList(proplist);
virStringListFree(proplist);
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;
@ -5683,7 +5683,7 @@ qemuMonitorJSONGetMigrationCapabilities(qemuMonitorPtr mon,
list = NULL;
cleanup:
virStringFreeList(list);
virStringListFree(list);
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;
@ -5701,9 +5701,9 @@ qemuMonitorJSONGetMigrationCapability(qemuMonitorPtr mon,
if (qemuMonitorJSONGetMigrationCapabilities(mon, &capsList) < 0)
return -1;
ret = virStringArrayHasString((const char **) capsList, cap);
ret = virStringListHasString((const char **) capsList, cap);
virStringFreeList(capsList);
virStringListFree(capsList);
return ret;
}
@ -6067,7 +6067,7 @@ qemuMonitorJSONGetStringArray(qemuMonitorPtr mon, const char *qmpCmd,
list = NULL;
cleanup:
virStringFreeList(list);
virStringListFree(list);
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;

View File

@ -971,15 +971,15 @@ qemuMonitorTextGetAllBlockStatsInfo(qemuMonitorPtr mon,
goto cleanup;
stats = NULL;
virStringFreeList(values);
virStringListFree(values);
values = NULL;
}
ret = maxstats;
cleanup:
virStringFreeList(lines);
virStringFreeList(values);
virStringListFree(lines);
virStringListFree(values);
VIR_FREE(stats);
VIR_FREE(info);
return ret;

View File

@ -360,7 +360,7 @@ static int qemuStringToArgvEnv(const char *args,
error:
VIR_FREE(progenv);
VIR_FREE(progargv);
virStringFreeList(arglist);
virStringListFree(arglist);
return -1;
}
@ -1588,7 +1588,7 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
case VIR_DOMAIN_HYPERV_LAST:
break;
}
virStringFreeList(hv_tokens);
virStringListFree(hv_tokens);
hv_tokens = NULL;
} else if (STREQ(tokens[i], "kvm=off")) {
dom->features[VIR_DOMAIN_FEATURE_KVM] = VIR_TRISTATE_SWITCH_ON;
@ -1619,8 +1619,8 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
cleanup:
VIR_FREE(model);
virStringFreeList(tokens);
virStringFreeList(hv_tokens);
virStringListFree(tokens);
virStringListFree(hv_tokens);
return ret;
syntax:
@ -2196,7 +2196,7 @@ qemuParseCommandLine(virCapsPtr caps,
def->keywrap->dea = VIR_TRISTATE_SWITCH_ABSENT;
}
}
virStringFreeList(list);
virStringListFree(list);
list = NULL;
} else if (STREQ(arg, "-serial")) {
WANT_VALUE();
@ -2658,7 +2658,7 @@ qemuParseCommandLine(virCapsPtr caps,
virDomainDiskDefFree(disk);
qemuDomainCmdlineDefFree(cmd);
virDomainDefFree(def);
virStringFreeList(list);
virStringListFree(list);
VIR_FREE(nics);
if (monConfig) {
virDomainChrSourceDefFree(*monConfig);
@ -2688,8 +2688,8 @@ virDomainDefPtr qemuParseCommandLineString(virCapsPtr caps,
pidfile, monConfig, monJSON);
cleanup:
virStringFreeList(progargv);
virStringFreeList(progenv);
virStringListFree(progargv);
virStringListFree(progenv);
return def;
}
@ -2736,7 +2736,7 @@ static int qemuParseProcFileStrings(int pid_value,
cleanup:
if (ret < 0)
virStringFreeList(str);
virStringListFree(str);
VIR_FREE(data);
VIR_FREE(path);
return ret;
@ -2780,7 +2780,7 @@ virDomainDefPtr qemuParseCommandLinePid(virCapsPtr caps,
cleanup:
VIR_FREE(exepath);
virStringFreeList(progargv);
virStringFreeList(progenv);
virStringListFree(progargv);
virStringListFree(progenv);
return def;
}

View File

@ -3164,7 +3164,7 @@ qemuProcessUpdateDevices(virQEMUDriverPtr driver,
qemuDevices = (const char **) priv->qemuDevices;
if ((tmp = old)) {
while (*tmp) {
if (!virStringArrayHasString(qemuDevices, *tmp) &&
if (!virStringListHasString(qemuDevices, *tmp) &&
virDomainDefFindDevice(vm->def, *tmp, &dev, false) == 0 &&
qemuDomainRemoveDevice(driver, vm, &dev) < 0) {
goto cleanup;
@ -3175,7 +3175,7 @@ qemuProcessUpdateDevices(virQEMUDriverPtr driver,
ret = 0;
cleanup:
virStringFreeList(old);
virStringListFree(old);
return ret;
}
@ -5085,7 +5085,7 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def,
ret = 0;
cleanup:
virStringFreeListCount(models, nmodels);
virStringListFreeCount(models, nmodels);
return ret;
}
@ -6067,7 +6067,7 @@ void qemuProcessStop(virQEMUDriverPtr driver,
VIR_FREE(vm->def->seclabels[i]->imagelabel);
}
virStringFreeList(priv->qemuDevices);
virStringListFree(priv->qemuDevices);
priv->qemuDevices = NULL;
qemuHostdevReAttachDomainDevices(driver, vm->def);

View File

@ -6221,7 +6221,7 @@ remoteConnectGetCPUModelNames(virConnectPtr conn,
rv = ret.ret;
cleanup:
virStringFreeList(retmodels);
virStringListFree(retmodels);
xdr_free((xdrproc_t) xdr_remote_connect_get_cpu_model_names_ret, (char *) &ret);

View File

@ -173,7 +173,7 @@ virStorageBackendSheepdogRefreshAllVol(virConnectPtr conn ATTRIBUTE_UNUSED,
goto cleanup;
}
virStringFreeList(cells);
virStringListFree(cells);
cells = NULL;
}
@ -181,8 +181,8 @@ virStorageBackendSheepdogRefreshAllVol(virConnectPtr conn ATTRIBUTE_UNUSED,
cleanup:
virCommandFree(cmd);
virStringFreeList(lines);
virStringFreeList(cells);
virStringListFree(lines);
virStringListFree(cells);
VIR_FREE(output);
return ret;
}

View File

@ -168,8 +168,8 @@ virStorageBackendZFSParseVol(virStoragePoolObjPtr pool,
ret = 0;
cleanup:
virStringFreeList(tokens);
virStringFreeList(name_tokens);
virStringListFree(tokens);
virStringListFree(name_tokens);
if (is_new_vol)
virStorageVolDefFree(volume);
return ret;
@ -219,7 +219,7 @@ virStorageBackendZFSFindVols(virStoragePoolObjPtr pool,
cleanup:
virCommandFree(cmd);
virStringFreeList(lines);
virStringListFree(lines);
VIR_FREE(volumes_list);
return 0;
@ -264,7 +264,7 @@ virStorageBackendZFSRefreshPool(virConnectPtr conn ATTRIBUTE_UNUSED,
if (STREQ(lines[i], ""))
continue;
virStringFreeList(tokens);
virStringListFree(tokens);
if (!(tokens = virStringSplitCount(lines[i], "\t", 0, &count)))
goto cleanup;
@ -294,8 +294,8 @@ virStorageBackendZFSRefreshPool(virConnectPtr conn ATTRIBUTE_UNUSED,
cleanup:
virCommandFree(cmd);
virStringFreeList(lines);
virStringFreeList(tokens);
virStringListFree(lines);
virStringListFree(tokens);
VIR_FREE(zpool_props);
return 0;

View File

@ -3392,7 +3392,7 @@ virStorageAddISCSIPoolSourceHost(virDomainDiskDefPtr def,
ret = 0;
cleanup:
virStringFreeList(tokens);
virStringListFree(tokens);
return ret;
}

View File

@ -863,14 +863,14 @@ virCgroupGetValueForBlkDev(virCgroupPtr group,
if (!(lines = virStringSplit(str, "\n", -1)))
goto error;
if (VIR_STRDUP(*value, virStringGetFirstWithPrefix(lines, prefix)) < 0)
if (VIR_STRDUP(*value, virStringListGetFirstWithPrefix(lines, prefix)) < 0)
goto error;
ret = 0;
error:
VIR_FREE(str);
VIR_FREE(prefix);
virStringFreeList(lines);
virStringListFree(lines);
return ret;
}
@ -1275,13 +1275,13 @@ virCgroupSetPartitionSuffix(const char *path, char **res)
goto cleanup;
}
if (!(*res = virStringJoin((const char **)tokens, "/")))
if (!(*res = virStringListJoin((const char **)tokens, "/")))
goto cleanup;
ret = 0;
cleanup:
virStringFreeList(tokens);
virStringListFree(tokens);
return ret;
}

View File

@ -3026,7 +3026,7 @@ virCommandRunRegex(virCommandPtr cmd,
ret = 0;
cleanup:
virStringFreeList(lines);
virStringListFree(lines);
VIR_FREE(outbuf);
if (groups) {
for (j = 0; j < totgroups; j++)

View File

@ -983,7 +983,7 @@ int virConfGetValueStringList(virConfPtr conf,
if (!cval)
return 0;
virStringFreeList(*values);
virStringListFree(*values);
*values = NULL;
switch (cval->type) {
@ -1003,7 +1003,7 @@ int virConfGetValueStringList(virConfPtr conf,
for (len = 0, eval = cval->list; eval; len++, eval = eval->next) {
if (VIR_STRDUP((*values)[len], eval->str) < 0) {
virStringFreeList(*values);
virStringListFree(*values);
*values = NULL;
return -1;
}

View File

@ -1877,7 +1877,7 @@ virFileGetMountSubtreeImpl(const char *mtabpath,
cleanup:
if (ret < 0)
virStringFreeList(mounts);
virStringListFree(mounts);
endmntent(procmnt);
return ret;
}
@ -1906,7 +1906,7 @@ virFileGetMountSubtreeImpl(const char *mtabpath ATTRIBUTE_UNUSED,
* the path @prefix, sorted from shortest to longest path.
*
* The @mountsret array will be NULL terminated and should
* be freed with virStringFreeList
* be freed with virStringListFree
*
* Returns 0 on success, -1 on error
*/
@ -1930,7 +1930,7 @@ int virFileGetMountSubtree(const char *mtabpath,
* ie opposite order to which they appear in @mtabpath
*
* The @mountsret array will be NULL terminated and should
* be freed with virStringFreeList
* be freed with virStringListFree
*
* Returns 0 on success, -1 on error
*/

View File

@ -878,7 +878,7 @@ virFirewallApplyRule(virFirewallPtr firewall,
ret = 0;
cleanup:
virStringFreeList(lines);
virStringListFree(lines);
VIR_FREE(output);
return ret;
}

View File

@ -87,7 +87,7 @@ virFirmwareParse(const char *str, virFirmwarePtr firmware)
ret = 0;
cleanup:
virStringFreeList(token);
virStringListFree(token);
return ret;
}
@ -132,6 +132,6 @@ virFirmwareParseList(const char *list,
ret = 0;
cleanup:
virStringFreeList(token);
virStringListFree(token);
return ret;
}

View File

@ -1530,7 +1530,7 @@ virLogParseOutput(const char *src)
}
cleanup:
virStringFreeList(tokens);
virStringListFree(tokens);
return ret;
}
@ -1607,7 +1607,7 @@ virLogParseFilter(const char *src)
goto cleanup;
cleanup:
virStringFreeList(tokens);
virStringListFree(tokens);
return ret;
}
@ -1667,7 +1667,7 @@ virLogParseOutputs(const char *src, virLogOutputPtr **outputs)
*outputs = list;
list = NULL;
cleanup:
virStringFreeList(strings);
virStringListFree(strings);
return ret;
}
@ -1717,7 +1717,7 @@ virLogParseFilters(const char *src, virLogFilterPtr **filters)
*filters = list;
list = NULL;
cleanup:
virStringFreeList(strings);
virStringListFree(strings);
return ret;
}

View File

@ -137,7 +137,7 @@ int virPolkitCheckAuth(const char *actionid,
}
cleanup:
virStringFreeListCount(retdetails, nretdetails);
virStringListFreeCount(retdetails, nretdetails);
return ret;
}

View File

@ -1014,7 +1014,7 @@ int virProcessGetStartTime(pid_t pid,
ret = 0;
cleanup:
virStringFreeList(tokens);
virStringListFree(tokens);
VIR_FREE(filename);
VIR_FREE(buf);
return ret;

View File

@ -1476,7 +1476,7 @@ virStorageFileParseChainIndex(const char *diskTarget,
*chainIndex = idx;
cleanup:
virStringFreeList(strings);
virStringListFree(strings);
return ret;
}
@ -2350,7 +2350,7 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
cleanup:
virURIFree(uri);
virStringFreeList(scheme);
virStringListFree(scheme);
return ret;
}
@ -2385,8 +2385,8 @@ virStorageSourceRBDAddHost(virStorageSourcePtr src,
parts = virStringSplit(hostport, "\\:", 0);
if (!parts)
goto error;
src->hosts[src->nhosts-1].name = virStringJoin((const char **)parts, ":");
virStringFreeList(parts);
src->hosts[src->nhosts-1].name = virStringListJoin((const char **)parts, ":");
virStringListFree(parts);
if (!src->hosts[src->nhosts-1].name)
goto error;
@ -2576,7 +2576,7 @@ virStorageSourceParseNBDColonString(const char *nbdstr,
ret = 0;
cleanup:
virStringFreeList(backing);
virStringListFree(backing);
return ret;
}
@ -3272,7 +3272,7 @@ virStorageFileCanonicalizeInjectSymlink(const char *path,
ret = 0;
cleanup:
virStringFreeListCount(tmp, ntmp);
virStringListFreeCount(tmp, ntmp);
return ret;
}
@ -3420,7 +3420,7 @@ virStorageFileCanonicalizePath(const char *path,
cleanup:
virHashFree(cycle);
virStringFreeListCount(components, ncomponents);
virStringListFreeCount(components, ncomponents);
VIR_FREE(linkpath);
VIR_FREE(currentpath);
@ -3534,6 +3534,6 @@ virStorageFileCheckCompat(const char *compat)
ret = 0;
cleanup:
virStringFreeList(version);
virStringListFree(version);
return ret;
}

View File

@ -38,7 +38,7 @@
VIR_LOG_INIT("util.string");
/*
* The following virStringSplit & virStringJoin methods
* The following virStringSplit & virStringListJoin methods
* are derived from g_strsplit / g_strjoin in glib2,
* also available under the LGPLv2+ license terms
*/
@ -66,7 +66,7 @@ VIR_LOG_INIT("util.string");
* before calling virStringSplit().
*
* Return value: a newly-allocated NULL-terminated array of strings. Use
* virStringFreeList() to free it.
* virStringListFree() to free it.
*/
char **
virStringSplitCount(const char *string,
@ -137,7 +137,7 @@ virStringSplit(const char *string,
/**
* virStringJoin:
* virStringListJoin:
* @strings: a NULL-terminated array of strings to join
* @delim: a string to insert between each of the strings
*
@ -148,8 +148,8 @@ virStringSplit(const char *string,
* Returns: a newly-allocated string containing all of the strings joined
* together, with @delim between them
*/
char *virStringJoin(const char **strings,
const char *delim)
char *virStringListJoin(const char **strings,
const char *delim)
{
char *ret;
virBuffer buf = VIR_BUFFER_INITIALIZER;
@ -169,13 +169,13 @@ char *virStringJoin(const char **strings,
/**
* virStringFreeList:
* virStringListFree:
* @str_array: a NULL-terminated array of strings to free
*
* Frees a NULL-terminated array of strings, and the array itself.
* If called on a NULL value, virStringFreeList() simply returns.
* If called on a NULL value, virStringListFree() simply returns.
*/
void virStringFreeList(char **strings)
void virStringListFree(char **strings)
{
char **tmp = strings;
while (tmp && *tmp) {
@ -187,14 +187,14 @@ void virStringFreeList(char **strings)
/**
* virStringFreeListCount:
* virStringListFreeCount:
* @strings: array of strings to free
* @count: number of elements in the array
*
* Frees a string array of @count length.
*/
void
virStringFreeListCount(char **strings,
virStringListFreeCount(char **strings,
size_t count)
{
size_t i;
@ -210,8 +210,8 @@ virStringFreeListCount(char **strings,
bool
virStringArrayHasString(const char **strings,
const char *needle)
virStringListHasString(const char **strings,
const char *needle)
{
size_t i = 0;
@ -227,7 +227,8 @@ virStringArrayHasString(const char **strings,
}
char *
virStringGetFirstWithPrefix(char **strings, const char *prefix)
virStringListGetFirstWithPrefix(char **strings,
const char *prefix)
{
size_t i = 0;
@ -814,7 +815,7 @@ int virStringSortRevCompare(const void *a, const void *b)
* @result: pointer to an array to be filled with NULL terminated list of matches
*
* Performs a POSIX extended regex search against a string and return all matching substrings.
* The @result value should be freed with virStringFreeList() when no longer
* The @result value should be freed with virStringListFree() when no longer
* required.
*
* @code
@ -834,7 +835,7 @@ int virStringSortRevCompare(const void *a, const void *b)
* // matches[2] == "bbb3c75c-d60f-43b0-b802-fd56b84a4222"
* // matches[3] == NULL;
*
* virStringFreeList(matches);
* virStringListFree(matches);
* @endcode
*
* Returns: -1 on error, or number of matches
@ -902,7 +903,7 @@ virStringSearch(const char *str,
cleanup:
regfree(&re);
if (ret < 0) {
virStringFreeList(*matches);
virStringListFree(*matches);
*matches = NULL;
}
return ret;

View File

@ -37,15 +37,18 @@ char **virStringSplit(const char *string,
size_t max_tokens)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
char *virStringJoin(const char **strings,
const char *delim)
char *virStringListJoin(const char **strings,
const char *delim)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
void virStringFreeList(char **strings);
void virStringFreeListCount(char **strings, size_t count);
void virStringListFree(char **strings);
void virStringListFreeCount(char **strings,
size_t count);
bool virStringArrayHasString(const char **strings, const char *needle);
char *virStringGetFirstWithPrefix(char **strings, const char *prefix)
bool virStringListHasString(const char **strings,
const char *needle);
char *virStringListGetFirstWithPrefix(char **strings,
const char *prefix)
ATTRIBUTE_NONNULL(2);
char *virArgvToString(const char *const *argv);

View File

@ -386,7 +386,7 @@ virURIResolveAlias(virConfPtr conf, const char *alias, char **uri)
if (aliases && *aliases) {
ret = virURIFindAliasMatch(aliases, alias, uri);
virStringFreeList(aliases);
virStringListFree(aliases);
} else {
ret = 0;
}

View File

@ -4933,7 +4933,7 @@ vboxSnapshotRedefine(virDomainPtr dom,
tmp = virStringReplace(newSnapshotPtr->storageController,
searchResultTab[it],
uuidReplacing);
virStringFreeList(searchResultTab);
virStringListFree(searchResultTab);
searchResultTab = NULL;
VIR_FREE(newSnapshotPtr->storageController);
if (!tmp)
@ -5341,9 +5341,9 @@ vboxSnapshotRedefine(virDomainPtr dom,
VIR_FREE(currentSnapshotXmlFilePath);
VBOX_UTF16_FREE(machineNameUtf16);
VBOX_UTF8_FREE(machineName);
virStringFreeList(realReadOnlyDisksPath);
virStringFreeList(realReadWriteDisksPath);
virStringFreeList(searchResultTab);
virStringListFree(realReadOnlyDisksPath);
virStringListFree(realReadWriteDisksPath);
virStringListFree(searchResultTab);
VIR_FREE(newSnapshotPtr);
VIR_FREE(machineLocationPath);
VIR_FREE(nameTmpUse);
@ -7187,7 +7187,7 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapshotPtr snapshot)
VBOX_RELEASE(machine);
VBOX_UTF16_FREE(settingsFilePathUtf16);
VBOX_UTF8_FREE(settingsFilepath);
virStringFreeList(searchResultTab);
virStringListFree(searchResultTab);
VIR_FREE(snapshotMachineDesc);
VBOX_UTF16_FREE(machineNameUtf16);
VBOX_UTF8_FREE(machineName);

View File

@ -107,7 +107,7 @@ virVBoxSnapshotConfCreateVBoxSnapshotConfHardDiskPtr(xmlNodePtr diskNode,
VIR_FREE(nodes);
VIR_FREE(location);
VIR_FREE(tmp);
virStringFreeList(searchTabResult);
virStringListFree(searchTabResult);
if (result < 0) {
virVboxSnapshotConfHardDiskFree(hardDisk);
hardDisk = NULL;
@ -276,7 +276,7 @@ virVBoxSnapshotConfRetrieveSnapshot(xmlNodePtr snapshotNode,
}
VIR_FREE(nodes);
VIR_FREE(uuid);
virStringFreeList(searchTabResult);
virStringListFree(searchTabResult);
return snapshot;
}
@ -458,8 +458,8 @@ virVBoxSnapshotConfSerializeSnapshot(xmlNodePtr node,
xmlUnlinkNode(snapshotsNode);
xmlFreeNode(snapshotsNode);
}
virStringFreeList(firstRegex);
virStringFreeList(secondRegex);
virStringListFree(firstRegex);
virStringListFree(secondRegex);
VIR_FREE(uuid);
VIR_FREE(timeStamp);
return result;
@ -739,7 +739,7 @@ virVBoxSnapshotConfLoadVboxFile(const char *filePath,
VIR_FREE(currentStateModifiedString);
VIR_FREE(currentSnapshotAttribute);
virStringFreeList(searchResultTab);
virStringListFree(searchResultTab);
if (ret < 0) {
virVBoxSnapshotConfMachineFree(machineDescription);
machineDescription = NULL;
@ -1235,8 +1235,8 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachinePtr machine,
xmlFreeDoc(xml);
virStringFreeList(firstRegex);
virStringFreeList(secondRegex);
virStringListFree(firstRegex);
virStringListFree(secondRegex);
return ret;
}
@ -1324,7 +1324,7 @@ virVBoxSnapshotConfGetRWDisksPathsFromLibvirtXML(const char *filePath,
xmlFreeDoc(xml);
xmlXPathFreeContext(xPathContext);
if (result < 0) {
virStringFreeList(ret);
virStringListFree(ret);
nodeSize = -1;
} else {
*rwDisksPath = ret;
@ -1385,7 +1385,7 @@ virVBoxSnapshotConfGetRODisksPathsFromLibvirtXML(const char *filePath,
xmlFreeDoc(xml);
xmlXPathFreeContext(xPathContext);
if (result < 0) {
virStringFreeList(ret);
virStringListFree(ret);
nodeSize = -1;
} else {
*roDisksPath = ret;

View File

@ -730,7 +730,7 @@ prlsdkGetFSInfo(PRL_HANDLE prldisk,
cleanup:
VIR_FREE(buf);
virStringFreeList(matches);
virStringListFree(matches);
return ret;
}

View File

@ -65,7 +65,7 @@ testFilterXML(char *xml)
cleanup:
virBufferFreeAndReset(&buf);
virStringFreeList(xmlLines);
virStringListFree(xmlLines);
return ret;
}

View File

@ -591,7 +591,7 @@ testQemuMonitorJSONGetTPMModels(const void *data)
cleanup:
qemuMonitorTestFree(test);
virStringFreeList(tpmmodels);
virStringListFree(tpmmodels);
return ret;
}
@ -651,7 +651,7 @@ testQemuMonitorJSONGetCommandLineOptionParameters(const void *data)
#undef CHECK
virStringFreeList(params);
virStringListFree(params);
params = NULL;
/* present but empty */
@ -677,7 +677,7 @@ testQemuMonitorJSONGetCommandLineOptionParameters(const void *data)
goto cleanup;
}
virStringFreeList(params);
virStringListFree(params);
params = NULL;
/* no such option */
@ -707,7 +707,7 @@ testQemuMonitorJSONGetCommandLineOptionParameters(const void *data)
cleanup:
qemuMonitorTestFree(test);
virStringFreeList(params);
virStringListFree(params);
return ret;
}
@ -1151,20 +1151,20 @@ testQemuMonitorJSONGetDeviceAliases(const void *data)
ret = 0;
for (alias = (const char **) aliases; *alias; alias++) {
if (!virStringArrayHasString(expected, *alias)) {
if (!virStringListHasString(expected, *alias)) {
fprintf(stderr, "got unexpected device alias '%s'\n", *alias);
ret = -1;
}
}
for (alias = expected; *alias; alias++) {
if (!virStringArrayHasString((const char **) aliases, *alias)) {
if (!virStringListHasString((const char **) aliases, *alias)) {
fprintf(stderr, "missing expected alias '%s'\n", *alias);
ret = -1;
}
}
cleanup:
virStringFreeList(aliases);
virStringListFree(aliases);
qemuMonitorTestFree(test);
return ret;
}

View File

@ -160,7 +160,7 @@ fakeStorageVolLookupByName(virStoragePoolPtr pool,
NULL, NULL);
cleanup:
virStringFreeList(volinfo);
virStringListFree(volinfo);
return ret;
fallback:

View File

@ -47,7 +47,7 @@ testFilterXML(char *xml)
cleanup:
virBufferFreeAndReset(&buf);
virStringFreeList(xmlLines);
virStringListFree(xmlLines);
return ret;
}

View File

@ -394,7 +394,7 @@ static int testConfParseStringList(const void *opaque ATTRIBUTE_UNUSED)
ret = 0;
cleanup:
virStringFreeList(str);
virStringListFree(str);
virConfFree(conf);
return ret;
}

View File

@ -84,7 +84,7 @@ static int testFileGetMountSubtree(const void *opaque)
data->mounts, data->nmounts);
cleanup:
virStringFreeList(gotmounts);
virStringListFree(gotmounts);
return ret;
}
#endif /* ! defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R */

View File

@ -124,7 +124,7 @@ VIR_MOCK_WRAP_RET_ARGS(dbus_connection_send_with_reply_and_block,
VIR_FREE(uidkey);
VIR_FREE(actionid);
VIR_FREE(cancellationId);
virStringFreeListCount(details, detailslen);
virStringListFreeCount(details, detailslen);
if (virDBusCreateReply(&reply,
"(bba&{ss})",

View File

@ -94,7 +94,7 @@ static int testSplit(const void *args)
ret = 0;
cleanup:
virStringFreeList(got);
virStringListFree(got);
return ret;
}
@ -106,7 +106,7 @@ static int testJoin(const void *args)
char *got;
int ret = -1;
if (!(got = virStringJoin(data->tokens, data->delim))) {
if (!(got = virStringListJoin(data->tokens, data->delim))) {
VIR_DEBUG("Got no result");
return -1;
}
@ -354,7 +354,7 @@ testStringSearch(const void *opaque)
ret = 0;
cleanup:
virStringFreeList(matches);
virStringListFree(matches);
return ret;
}
@ -502,7 +502,7 @@ testStringToLong(const void *opaque)
/* The point of this test is to check whether all members of the array are
* freed. The test has to be checked using valgrind. */
static int
testVirStringFreeListCount(const void *opaque ATTRIBUTE_UNUSED)
testVirStringListFreeCount(const void *opaque ATTRIBUTE_UNUSED)
{
char **list;
@ -513,7 +513,7 @@ testVirStringFreeListCount(const void *opaque ATTRIBUTE_UNUSED)
ignore_value(VIR_STRDUP(list[2], "test2"));
ignore_value(VIR_STRDUP(list[3], "test3"));
virStringFreeListCount(list, 4);
virStringListFreeCount(list, 4);
return 0;
}
@ -779,8 +779,8 @@ mymain(void)
TEST_STRTOL("-18446744073709551616", NULL, 0, -1, 0U, -1,
0LL, -1, 0ULL, -1);
/* test virStringFreeListCount */
if (virTestRun("virStringFreeListCount", testVirStringFreeListCount,
/* test virStringListFreeCount */
if (virTestRun("virStringListFreeCount", testVirStringListFreeCount,
NULL) < 0)
ret = -1;

View File

@ -878,7 +878,7 @@ virshParseRateStr(vshControl *ctl,
ret = 0;
cleanup:
virStringFreeList(tok);
virStringListFree(tok);
return ret;
}
@ -4043,14 +4043,14 @@ cmdStartGetFDs(vshControl *ctl,
fds[nfds - 1] = fd;
}
virStringFreeList(fdlist);
virStringListFree(fdlist);
*fdsret = fds;
*nfdsret = nfds;
return 0;
error:
virStringFreeList(fdlist);
virStringListFree(fdlist);
VIR_FREE(fds);
return -1;
}
@ -5570,7 +5570,7 @@ cmdShutdown(vshControl *ctl, const vshCmd *cmd)
cleanup:
if (dom)
virDomainFree(dom);
virStringFreeList(modes);
virStringListFree(modes);
return ret;
}
@ -5650,7 +5650,7 @@ cmdReboot(vshControl *ctl, const vshCmd *cmd)
cleanup:
if (dom)
virDomainFree(dom);
virStringFreeList(modes);
virStringListFree(modes);
return ret;
}
@ -8827,7 +8827,7 @@ virshParseEventStr(const char *event,
ret = 0;
cleanup:
virStringFreeList(tok);
virStringListFree(tok);
return ret;
}

View File

@ -156,7 +156,7 @@ cmdNodeDeviceDestroy(vshControl *ctl, const vshCmd *cmd)
ret = true;
cleanup:
virStringFreeList(arr);
virStringListFree(arr);
if (dev)
virNodeDeviceFree(dev);
return ret;
@ -498,7 +498,7 @@ cmdNodeListDevices(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
}
cleanup:
virStringFreeList(caps);
virStringListFree(caps);
virshNodeDeviceListFree(list);
return ret;
}
@ -567,7 +567,7 @@ cmdNodeDeviceDumpXML(vshControl *ctl, const vshCmd *cmd)
ret = true;
cleanup:
virStringFreeList(arr);
virStringListFree(arr);
VIR_FREE(xml);
if (device)
virNodeDeviceFree(device);

View File

@ -1125,7 +1125,7 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
for (i = 0; i < npoolTypes; i++) {
if ((poolType = virStoragePoolTypeFromString(poolTypes[i])) < 0) {
vshError(ctl, _("Invalid pool type '%s'"), poolTypes[i]);
virStringFreeList(poolTypes);
virStringListFree(poolTypes);
return false;
}
@ -1170,7 +1170,7 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
break;
}
}
virStringFreeList(poolTypes);
virStringListFree(poolTypes);
}
if (!(list = virshStoragePoolListCollect(ctl, flags)))

View File

@ -255,7 +255,7 @@ virshParseSnapshotMemspec(vshControl *ctl, virBufferPtr buf, const char *str)
cleanup:
if (ret < 0)
vshError(ctl, _("unable to parse memspec: %s"), str);
virStringFreeList(array);
virStringListFree(array);
return ret;
}
@ -306,7 +306,7 @@ virshParseSnapshotDiskspec(vshControl *ctl, virBufferPtr buf, const char *str)
cleanup:
if (ret < 0)
vshError(ctl, _("unable to parse diskspec: %s"), str);
virStringFreeList(array);
virStringListFree(array);
return ret;
}

View File

@ -245,7 +245,7 @@ virBitmapPtr virHostValidateGetCPUFlags(void)
ignore_value(virBitmapSetBit(flags, value));
}
virStringFreeListCount(tokens, ntokens);
virStringListFreeCount(tokens, ntokens);
} while (1);
cleanup:
@ -345,7 +345,7 @@ static int virHostValidateCGroupSupport(const char *hvname,
matched = true;
}
virStringFreeListCount(cgroups, ncgroups);
virStringListFreeCount(cgroups, ncgroups);
}
VIR_FREE(line);
@ -394,7 +394,7 @@ static int virHostValidateCGroupMount(const char *hvname,
matched = true;
}
virStringFreeListCount(opts, nopts);
virStringListFreeCount(opts, nopts);
}
endmntent(fp);
if (!matched)

View File

@ -90,7 +90,7 @@ static int virLoginShellAllowedUser(virConfPtr conf,
name, conf_file);
cleanup:
VIR_FREE(gname);
virStringFreeList(users);
virStringListFree(users);
return ret;
}
@ -308,7 +308,7 @@ main(int argc, char **argv)
if (autoshell) {
tmp = virGetUserShell(uid);
if (tmp) {
virStringFreeList(shargv);
virStringListFree(shargv);
shargvlen = 1;
if (VIR_ALLOC_N(shargv[0], shargvlen + 1) < 0) {
VIR_FREE(tmp);
@ -394,7 +394,7 @@ main(int argc, char **argv)
virDomainFree(dom);
if (conn)
virConnectClose(conn);
virStringFreeList(shargv);
virStringListFree(shargv);
VIR_FREE(shcmd);
VIR_FREE(term);
VIR_FREE(name);

View File

@ -179,7 +179,7 @@ vshNameSorter(const void *a, const void *b)
/*
* Convert the strings separated by ',' into array. The returned
* array is a NULL terminated string list. The caller has to free
* the array using virStringFreeList or a similar method.
* the array using virStringListFree or a similar method.
*
* Returns the length of the filled array on success, or -1
* on error.
@ -2835,7 +2835,7 @@ vshReadlineParse(const char *text, int state)
return res;
}
res = NULL;
virStringFreeList(completed_list);
virStringListFree(completed_list);
completed_list_index = 0;
}
}