Use more of VIR_XPATH_NODE_AUTORESTORE

This is convenience macro, use it more. This commit was generated
using the following spatch:

  @@
  symbol node;
  identifier old;
  identifier ctxt;
  type xmlNodePtr;
  @@
  - xmlNodePtr old;
  + VIR_XPATH_NODE_AUTORESTORE(ctxt);
    ...
  - old = ctxt->node;
    ... when != old
  - ctxt->node = old;

  @@
  symbol node;
  identifier old;
  identifier ctxt;
  type xmlNodePtr;
  @@
  - xmlNodePtr old = ctxt->node;
  + VIR_XPATH_NODE_AUTORESTORE(ctxt);
    ... when != old
  - ctxt->node = old;

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2020-06-02 22:06:41 +02:00
parent 52351030a4
commit d3a7479c0b
18 changed files with 51 additions and 137 deletions

View File

@ -326,7 +326,7 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
{
virCPUDefPtr def = NULL;
xmlNodePtr *nodes = NULL;
xmlNodePtr oldnode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int n;
size_t i;
char *cpuMode;
@ -662,7 +662,6 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
ret = 0;
cleanup:
ctxt->node = oldnode;
VIR_FREE(fallback);
VIR_FREE(vendor_id);
VIR_FREE(nodes);

View File

@ -13265,16 +13265,14 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
/* Check for an optional seclabel override in <source/>. */
if (chr_def) {
xmlNodePtr saved_node = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = cur;
if (virSecurityDeviceLabelDefParseXML(&def->seclabels,
&def->nseclabels,
ctxt,
flags) < 0) {
ctxt->node = saved_node;
goto error;
}
ctxt->node = saved_node;
}
} else if (virXMLNodeNameEqual(cur, "log")) {
if (logParsed) {
@ -22181,11 +22179,10 @@ virDomainDefParseXML(xmlDocPtr xml,
}
if ((node = virXPathNode("./sysinfo[1]", ctxt)) != NULL) {
xmlNodePtr oldnode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node;
def->sysinfo = virSysinfoParseXML(node, ctxt,
def->uuid, uuid_generated);
ctxt->node = oldnode;
if (def->sysinfo == NULL)
goto error;

View File

@ -262,12 +262,11 @@ static int
virInterfaceDefParseDhcp(virInterfaceProtocolDefPtr def,
xmlNodePtr dhcp, xmlXPathContextPtr ctxt)
{
xmlNodePtr save;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
char *tmp;
int ret = 0;
def->dhcp = 1;
save = ctxt->node;
ctxt->node = dhcp;
def->peerdns = -1;
/* Not much to do in the current version */
@ -284,7 +283,6 @@ virInterfaceDefParseDhcp(virInterfaceProtocolDefPtr def,
VIR_FREE(tmp);
}
ctxt->node = save;
return ret;
}
@ -426,13 +424,11 @@ static int
virInterfaceDefParseIfAdressing(virInterfaceDefPtr def,
xmlXPathContextPtr ctxt)
{
xmlNodePtr save;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr *protoNodes = NULL;
int nProtoNodes, pp, ret = -1;
char *tmp;
save = ctxt->node;
nProtoNodes = virXPathNodeSet("./protocol", ctxt, &protoNodes);
if (nProtoNodes < 0)
goto error;
@ -487,7 +483,6 @@ virInterfaceDefParseIfAdressing(virInterfaceDefPtr def,
error:
VIR_FREE(protoNodes);
ctxt->node = save;
return ret;
}
@ -558,7 +553,7 @@ virInterfaceDefParseBondItfs(virInterfaceDefPtr def,
xmlXPathContextPtr ctxt)
{
xmlNodePtr *interfaces = NULL;
xmlNodePtr bond = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
virInterfaceDefPtr itf;
int nbItf;
size_t i;
@ -591,7 +586,6 @@ virInterfaceDefParseBondItfs(virInterfaceDefPtr def,
ret = 0;
cleanup:
VIR_FREE(interfaces);
ctxt->node = bond;
return ret;
}
@ -698,7 +692,7 @@ virInterfaceDefParseXML(xmlXPathContextPtr ctxt,
virInterfaceDefPtr def;
int type;
char *tmp;
xmlNodePtr cur = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr lnk;
@ -804,11 +798,9 @@ virInterfaceDefParseXML(xmlXPathContextPtr ctxt,
}
ctxt->node = cur;
return def;
error:
ctxt->node = cur;
virInterfaceDefFree(def);
return NULL;
}

View File

@ -33,7 +33,7 @@ int
virNetDevVlanParse(xmlNodePtr node, xmlXPathContextPtr ctxt, virNetDevVlanPtr def)
{
int ret = -1;
xmlNodePtr save = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
char *trunk = NULL;
char *nativeMode = NULL;
xmlNodePtr *tagNodes = NULL;
@ -128,7 +128,6 @@ virNetDevVlanParse(xmlNodePtr node, xmlXPathContextPtr ctxt, virNetDevVlanPtr de
ret = 0;
cleanup:
ctxt->node = save;
VIR_FREE(tagNodes);
VIR_FREE(trunk);
VIR_FREE(nativeMode);

View File

@ -800,7 +800,7 @@ virNetworkDNSSrvDefParseXML(const char *networkName,
bool partialOkay)
{
int ret;
xmlNodePtr save_ctxt = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node;
@ -895,12 +895,10 @@ virNetworkDNSSrvDefParseXML(const char *networkName,
goto error;
}
ctxt->node = save_ctxt;
return 0;
error:
virNetworkDNSSrvDefClear(def);
ctxt->node = save_ctxt;
return -1;
}
@ -961,7 +959,7 @@ virNetworkDNSDefParseXML(const char *networkName,
int nhosts, nsrvs, ntxts, nfwds;
size_t i;
int ret = -1;
xmlNodePtr save = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node;
@ -1100,7 +1098,6 @@ virNetworkDNSDefParseXML(const char *networkName,
VIR_FREE(hostNodes);
VIR_FREE(srvNodes);
VIR_FREE(txtNodes);
ctxt->node = save;
return ret;
}
@ -1116,7 +1113,7 @@ virNetworkIPDefParseXML(const char *networkName,
* On failure clear it out, but don't free it.
*/
xmlNodePtr save;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr dhcp;
char *address = NULL, *netmask = NULL;
unsigned long prefix = 0;
@ -1124,7 +1121,6 @@ virNetworkIPDefParseXML(const char *networkName,
int result = -1;
char *localPtr = NULL;
save = ctxt->node;
ctxt->node = node;
/* grab raw data from XML */
@ -1256,7 +1252,6 @@ virNetworkIPDefParseXML(const char *networkName,
VIR_FREE(netmask);
VIR_FREE(localPtr);
ctxt->node = save;
return result;
}
@ -1291,7 +1286,7 @@ virNetworkPortGroupParseXML(virPortGroupDefPtr def,
* On failure clear it out, but don't free it.
*/
xmlNodePtr save;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr virtPortNode;
xmlNodePtr vlanNode;
xmlNodePtr bandwidth_node;
@ -1300,7 +1295,6 @@ virNetworkPortGroupParseXML(virPortGroupDefPtr def,
int result = -1;
save = ctxt->node;
ctxt->node = node;
/* grab raw data from XML */
@ -1348,7 +1342,6 @@ virNetworkPortGroupParseXML(virPortGroupDefPtr def,
VIR_FREE(isDefault);
VIR_FREE(trustGuestRxFilters);
ctxt->node = save;
return result;
}
@ -1365,7 +1358,7 @@ virNetworkForwardNatDefParseXML(const char *networkName,
int nNatAddrs, nNatPorts;
char *addrStart = NULL;
char *addrEnd = NULL;
xmlNodePtr save = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node;
@ -1477,7 +1470,6 @@ virNetworkForwardNatDefParseXML(const char *networkName,
VIR_FREE(addrEnd);
VIR_FREE(natAddrNodes);
VIR_FREE(natPortNodes);
ctxt->node = save;
return ret;
}
@ -1499,7 +1491,7 @@ virNetworkForwardDefParseXML(const char *networkName,
char *forwardManaged = NULL;
char *forwardDriverName = NULL;
char *type = NULL;
xmlNodePtr save = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node;
@ -1726,7 +1718,6 @@ virNetworkForwardDefParseXML(const char *networkName,
VIR_FREE(forwardIfNodes);
VIR_FREE(forwardAddrNodes);
VIR_FREE(forwardNatNodes);
ctxt->node = save;
return ret;
}
@ -1747,7 +1738,7 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr forwardNode = NULL;
char *ipv6nogwStr = NULL;
char *trustGuestRxFilters = NULL;
xmlNodePtr save = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr bandwidthNode = NULL;
xmlNodePtr vlanNode;
xmlNodePtr metadataNode = NULL;
@ -2164,7 +2155,6 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt,
goto error;
}
ctxt->node = save;
return def;
error:
@ -2176,7 +2166,6 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt,
VIR_FREE(portGroupNodes);
VIR_FREE(ipv6nogwStr);
VIR_FREE(trustGuestRxFilters);
ctxt->node = save;
return NULL;
}

View File

@ -228,7 +228,7 @@ virNetDevIPRouteParseXML(const char *errorDetail,
*/
virNetDevIPRoutePtr def = NULL;
xmlNodePtr save;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
char *family = NULL;
char *address = NULL, *netmask = NULL;
char *gateway = NULL;
@ -237,7 +237,6 @@ virNetDevIPRouteParseXML(const char *errorDetail,
bool hasPrefix = false;
bool hasMetric = false;
save = ctxt->node;
ctxt->node = node;
/* grab raw data from XML */
@ -278,7 +277,6 @@ virNetDevIPRouteParseXML(const char *errorDetail,
hasMetric);
cleanup:
ctxt->node = save;
VIR_FREE(family);
VIR_FREE(address);
VIR_FREE(netmask);

View File

@ -703,11 +703,10 @@ virNodeDevCapDRMParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapDRMPtr drm)
{
xmlNodePtr orignode;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1, val;
char *type = NULL;
orignode = ctxt->node;
ctxt->node = node;
type = virXPathString("string(./type[1])", ctxt);
@ -723,7 +722,6 @@ virNodeDevCapDRMParseXML(xmlXPathContextPtr ctxt,
out:
VIR_FREE(type);
ctxt->node = orignode;
return ret;
}
@ -734,11 +732,10 @@ virNodeDevCapCCWParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapCCWPtr ccw_dev)
{
xmlNodePtr orignode;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
char *cssid = NULL, *ssid = NULL, *devno = NULL;
orignode = ctxt->node;
ctxt->node = node;
if (!(cssid = virXPathString("string(./cssid[1])", ctxt))) {
@ -783,7 +780,6 @@ virNodeDevCapCCWParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
ctxt->node = orignode;
VIR_FREE(cssid);
VIR_FREE(ssid);
VIR_FREE(devno);
@ -797,12 +793,12 @@ virNodeDevCapStorageParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapStoragePtr storage)
{
xmlNodePtr orignode, *nodes = NULL;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr *nodes = NULL;
size_t i;
int n, ret = -1;
unsigned long long val;
orignode = ctxt->node;
ctxt->node = node;
storage->block = virXPathString("string(./block[1])", ctxt);
@ -851,7 +847,6 @@ virNodeDevCapStorageParseXML(xmlXPathContextPtr ctxt,
if (virNodeDevCapsDefParseULongLong("number(./media_size[1])", ctxt, &val, def,
_("no removable media size supplied for '%s'"),
_("invalid removable media size supplied for '%s'")) < 0) {
ctxt->node = orignode2;
VIR_FREE(type);
goto out;
}
@ -881,7 +876,6 @@ virNodeDevCapStorageParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
VIR_FREE(nodes);
ctxt->node = orignode;
return ret;
}
@ -892,10 +886,9 @@ virNodeDevCapSCSIParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapSCSIPtr scsi)
{
xmlNodePtr orignode;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
orignode = ctxt->node;
ctxt->node = node;
if (virNodeDevCapsDefParseULong("number(./host[1])", ctxt,
@ -926,7 +919,6 @@ virNodeDevCapSCSIParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
ctxt->node = orignode;
return ret;
}
@ -937,12 +929,12 @@ virNodeDevCapSCSITargetParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapSCSITargetPtr scsi_target)
{
xmlNodePtr orignode, *nodes = NULL;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr *nodes = NULL;
int ret = -1, n = 0;
size_t i;
char *type = NULL;
orignode = ctxt->node;
ctxt->node = node;
scsi_target->name = virXPathString("string(./target[1])", ctxt);
@ -967,11 +959,8 @@ virNodeDevCapSCSITargetParseXML(xmlXPathContextPtr ctxt,
}
if (STREQ(type, "fc_remote_port")) {
xmlNodePtr orignode2;
scsi_target->flags |= VIR_NODE_DEV_CAP_FLAG_FC_RPORT;
orignode2 = ctxt->node;
ctxt->node = nodes[i];
if (virNodeDevCapsDefParseString("string(./rport[1])",
@ -989,8 +978,6 @@ virNodeDevCapSCSITargetParseXML(xmlXPathContextPtr ctxt,
def->name);
goto out;
}
ctxt->node = orignode2;
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown SCSI target capability type '%s' for '%s'"),
@ -1004,7 +991,6 @@ virNodeDevCapSCSITargetParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
ctxt->node = orignode;
VIR_FREE(type);
VIR_FREE(nodes);
return ret;
@ -1019,12 +1005,12 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt,
int create,
const char *virt_type)
{
xmlNodePtr orignode, *nodes = NULL;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr *nodes = NULL;
int ret = -1, n = 0;
size_t i;
char *type = NULL;
orignode = ctxt->node;
ctxt->node = node;
if (create == EXISTING_DEVICE) {
@ -1061,12 +1047,8 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt,
scsi_host->flags |= VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS;
} else if (STREQ(type, "fc_host")) {
xmlNodePtr orignode2;
scsi_host->flags |= VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST;
orignode2 = ctxt->node;
ctxt->node = nodes[i];
if (virNodeDevCapsDefParseString("string(./wwnn[1])",
@ -1098,8 +1080,6 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt,
&scsi_host->fabric_wwn) < 0)
VIR_DEBUG("No fabric_wwn defined for '%s'", def->name);
ctxt->node = orignode2;
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown SCSI host capability type '%s' for '%s'"),
@ -1114,7 +1094,6 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt,
out:
VIR_FREE(type);
ctxt->node = orignode;
VIR_FREE(nodes);
return ret;
}
@ -1126,13 +1105,13 @@ virNodeDevCapNetParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapNetPtr net)
{
xmlNodePtr orignode, lnk;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr lnk;
size_t i = -1;
int ret = -1, n = -1;
char *tmp = NULL;
xmlNodePtr *nodes = NULL;
orignode = ctxt->node;
ctxt->node = node;
net->ifname = virXPathString("string(./interface[1])", ctxt);
@ -1192,7 +1171,6 @@ virNodeDevCapNetParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
ctxt->node = orignode;
VIR_FREE(nodes);
VIR_FREE(tmp);
return ret;
@ -1205,10 +1183,9 @@ virNodeDevCapUSBInterfaceParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapUSBIfPtr usb_if)
{
xmlNodePtr orignode;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
orignode = ctxt->node;
ctxt->node = node;
if (virNodeDevCapsDefParseULong("number(./number[1])", ctxt,
@ -1239,7 +1216,6 @@ virNodeDevCapUSBInterfaceParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
ctxt->node = orignode;
return ret;
}
@ -1274,10 +1250,9 @@ virNodeDevCapUSBDevParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapUSBDevPtr usb_dev)
{
xmlNodePtr orignode;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
orignode = ctxt->node;
ctxt->node = node;
if (virNodeDevCapsDefParseULong("number(./bus[1])", ctxt,
@ -1309,7 +1284,6 @@ virNodeDevCapUSBDevParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
ctxt->node = orignode;
return ret;
}
@ -1319,7 +1293,7 @@ virNodeDevCapPCIDevIommuGroupParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr iommuGroupNode,
virNodeDevCapPCIDevPtr pci_dev)
{
xmlNodePtr origNode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr *addrNodes = NULL;
char *numberStr = NULL;
int nAddrNodes, ret = -1;
@ -1363,7 +1337,6 @@ virNodeDevCapPCIDevIommuGroupParseXML(xmlXPathContextPtr ctxt,
ret = 0;
cleanup:
ctxt->node = origNode;
VIR_FREE(numberStr);
VIR_FREE(addrNodes);
VIR_FREE(pciAddr);
@ -1376,7 +1349,7 @@ virPCIEDeviceInfoLinkParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr linkNode,
virPCIELinkPtr lnk)
{
xmlNodePtr origNode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1, speed;
char *speedStr = NULL, *portStr = NULL;
@ -1413,7 +1386,6 @@ virPCIEDeviceInfoLinkParseXML(xmlXPathContextPtr ctxt,
cleanup:
VIR_FREE(portStr);
VIR_FREE(speedStr);
ctxt->node = origNode;
return ret;
}
@ -1423,7 +1395,8 @@ virPCIEDeviceInfoParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr pciExpressNode,
virPCIEDeviceInfoPtr pci_express)
{
xmlNodePtr lnk, origNode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr lnk;
int ret = -1;
ctxt->node = pciExpressNode;
@ -1448,7 +1421,6 @@ virPCIEDeviceInfoParseXML(xmlXPathContextPtr ctxt,
ret = 0;
cleanup:
ctxt->node = origNode;
return ret;
}
@ -1595,7 +1567,7 @@ virNodeDevPCICapabilityParseXML(xmlXPathContextPtr ctxt,
virNodeDevCapPCIDevPtr pci_dev)
{
char *type = virXMLPropString(node, "type");
xmlNodePtr orignode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
ctxt->node = node;
@ -1624,7 +1596,6 @@ virNodeDevPCICapabilityParseXML(xmlXPathContextPtr ctxt,
ret = 0;
cleanup:
VIR_FREE(type);
ctxt->node = orignode;
return ret;
}
@ -1635,7 +1606,9 @@ virNodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapPCIDevPtr pci_dev)
{
xmlNodePtr orignode, iommuGroupNode, pciExpress;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr iommuGroupNode;
xmlNodePtr pciExpress;
xmlNodePtr *nodes = NULL;
int n = 0;
int ret = -1;
@ -1643,7 +1616,6 @@ virNodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt,
char *tmp = NULL;
size_t i = 0;
orignode = ctxt->node;
ctxt->node = node;
if ((tmp = virXPathString("string(./class[1])", ctxt))) {
@ -1737,7 +1709,6 @@ virNodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt,
VIR_FREE(nodes);
VIR_FREE(tmp);
virPCIEDeviceInfoFree(pci_express);
ctxt->node = orignode;
return ret;
}
@ -1750,11 +1721,10 @@ virNodeDevCapSystemParseXML(xmlXPathContextPtr ctxt,
{
virNodeDevCapSystemHardwarePtr hardware = &syscap->hardware;
virNodeDevCapSystemFirmwarePtr firmware = &syscap->firmware;
xmlNodePtr orignode;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
char *tmp;
orignode = ctxt->node;
ctxt->node = node;
syscap->product_name = virXPathString("string(./product[1])", ctxt);
@ -1784,7 +1754,6 @@ virNodeDevCapSystemParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
ctxt->node = orignode;
return ret;
}
@ -1795,10 +1764,9 @@ virNodeDevCapMdevParseXML(xmlXPathContextPtr ctxt,
xmlNodePtr node,
virNodeDevCapMdevPtr mdev)
{
xmlNodePtr orignode;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
orignode = ctxt->node;
ctxt->node = node;
if (!(mdev->type = virXPathString("string(./type[1]/@id)", ctxt))) {
@ -1817,7 +1785,6 @@ virNodeDevCapMdevParseXML(xmlXPathContextPtr ctxt,
ret = 0;
out:
ctxt->node = orignode;
return ret;
}

View File

@ -846,7 +846,7 @@ virDomainNumaDefCPUParseXML(virDomainNumaPtr def,
xmlXPathContextPtr ctxt)
{
xmlNodePtr *nodes = NULL;
xmlNodePtr oldNode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
char *tmp = NULL;
int n;
size_t i, j;
@ -963,7 +963,6 @@ virDomainNumaDefCPUParseXML(virDomainNumaPtr def,
ret = 0;
cleanup:
ctxt->node = oldNode;
VIR_FREE(nodes);
VIR_FREE(tmp);
return ret;

View File

@ -144,7 +144,7 @@ virDomainSnapshotDiskDefParseXML(xmlNodePtr node,
char *type = NULL;
char *driver = NULL;
xmlNodePtr cur;
xmlNodePtr saved = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node;
@ -205,7 +205,6 @@ virDomainSnapshotDiskDefParseXML(xmlNodePtr node,
ret = 0;
cleanup:
ctxt->node = saved;
VIR_FREE(driver);
VIR_FREE(snapshot);

View File

@ -178,7 +178,7 @@ virStorageAdapterParseXML(virStorageAdapterPtr adapter,
xmlXPathContextPtr ctxt)
{
int ret = -1;
xmlNodePtr relnode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
char *adapter_type = NULL;
ctxt->node = node;
@ -208,7 +208,6 @@ virStorageAdapterParseXML(virStorageAdapterPtr adapter,
ret = 0;
cleanup:
ctxt->node = relnode;
VIR_FREE(adapter_type);
return ret;
}

View File

@ -727,7 +727,7 @@ virStorageDefParsePerms(xmlXPathContextPtr ctxt,
{
long long val;
int ret = -1;
xmlNodePtr relnode;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr node;
g_autofree char *mode = NULL;
@ -741,7 +741,6 @@ virStorageDefParsePerms(xmlXPathContextPtr ctxt,
return 0;
}
relnode = ctxt->node;
ctxt->node = node;
if ((mode = virXPathString("string(./mode)", ctxt))) {
@ -791,7 +790,6 @@ virStorageDefParsePerms(xmlXPathContextPtr ctxt,
ret = 0;
error:
ctxt->node = relnode;
return ret;
}

View File

@ -57,7 +57,7 @@ virSaveCookieParse(xmlXPathContextPtr ctxt,
virObjectPtr *obj,
virSaveCookieCallbacksPtr saveCookie)
{
xmlNodePtr node = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1;
*obj = NULL;
@ -70,7 +70,6 @@ virSaveCookieParse(xmlXPathContextPtr ctxt,
ret = virSaveCookieParseNode(ctxt, obj, saveCookie);
cleanup:
ctxt->node = node;
return ret;
}

View File

@ -40,14 +40,12 @@ loadData(const char *mapfile,
void *data)
{
int ret = -1;
xmlNodePtr ctxt_node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr *nodes = NULL;
int n;
size_t i;
int rv;
ctxt_node = ctxt->node;
if ((n = virXPathNodeSet(element, ctxt, &nodes)) < 0)
goto cleanup;
@ -58,7 +56,6 @@ loadData(const char *mapfile,
}
for (i = 0; i < n; i++) {
xmlNodePtr old = ctxt->node;
char *name = virXMLPropString(nodes[i], "name");
if (!name) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@ -68,7 +65,6 @@ loadData(const char *mapfile,
VIR_DEBUG("Load %s name %s", element, name);
ctxt->node = nodes[i];
rv = callback(ctxt, name, data);
ctxt->node = old;
VIR_FREE(name);
if (rv < 0)
goto cleanup;
@ -77,7 +73,6 @@ loadData(const char *mapfile,
ret = 0;
cleanup:
ctxt->node = ctxt_node;
VIR_FREE(nodes);
return ret;
@ -135,13 +130,11 @@ loadIncludes(xmlXPathContextPtr ctxt,
void *data)
{
int ret = -1;
xmlNodePtr ctxt_node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr *nodes = NULL;
int n;
size_t i;
ctxt_node = ctxt->node;
n = virXPathNodeSet("include", ctxt, &nodes);
if (n < 0)
goto cleanup;
@ -164,7 +157,6 @@ loadIncludes(xmlXPathContextPtr ctxt,
ret = 0;
cleanup:
ctxt->node = ctxt_node;
VIR_FREE(nodes);
return ret;

View File

@ -1486,7 +1486,7 @@ x86ModelParseSignatures(virCPUx86ModelPtr model,
xmlXPathContextPtr ctxt)
{
g_autofree xmlNodePtr *nodes = NULL;
xmlNodePtr root = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
size_t i;
int n;
@ -1527,7 +1527,6 @@ x86ModelParseSignatures(virCPUx86ModelPtr model,
return -1;
}
ctxt->node = root;
return 0;
}

View File

@ -207,12 +207,11 @@ lxcDomainDefNamespaceParse(xmlXPathContextPtr ctxt,
lxcDomainDefPtr lxcDef = g_new0(lxcDomainDef, 1);
g_autofree xmlNodePtr *nodes = NULL;
bool uses_lxc_ns = false;
xmlNodePtr node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
int feature;
int n;
size_t i;
node = ctxt->node;
if ((n = virXPathNodeSet("./lxc:namespace/*", ctxt, &nodes)) < 0)
goto error;
uses_lxc_ns |= n > 0;
@ -249,7 +248,6 @@ lxcDomainDefNamespaceParse(xmlXPathContextPtr ctxt,
goto error;
}
}
ctxt->node = node;
if (uses_lxc_ns)
*data = lxcDef;
else

View File

@ -143,7 +143,7 @@ static virStorageEncryptionSecretPtr
virStorageEncryptionSecretParse(xmlXPathContextPtr ctxt,
xmlNodePtr node)
{
xmlNodePtr old_node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
virStorageEncryptionSecretPtr ret;
char *type_str = NULL;
char *uuidstr = NULL;
@ -152,7 +152,6 @@ virStorageEncryptionSecretParse(xmlXPathContextPtr ctxt,
if (VIR_ALLOC(ret) < 0)
return NULL;
old_node = ctxt->node;
ctxt->node = node;
if (!(type_str = virXPathString("string(./@type)", ctxt))) {
@ -173,7 +172,6 @@ virStorageEncryptionSecretParse(xmlXPathContextPtr ctxt,
VIR_FREE(type_str);
ctxt->node = old_node;
return ret;
cleanup:
@ -181,7 +179,6 @@ virStorageEncryptionSecretParse(xmlXPathContextPtr ctxt,
virStorageEncryptionSecretFree(ret);
VIR_FREE(uuidstr);
VIR_FREE(usagestr);
ctxt->node = old_node;
return NULL;
}
@ -244,7 +241,7 @@ virStorageEncryptionPtr
virStorageEncryptionParseNode(xmlNodePtr node,
xmlXPathContextPtr ctxt)
{
xmlNodePtr saveNode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr *nodes = NULL;
virStorageEncryptionPtr encdef = NULL;
virStorageEncryptionPtr ret = NULL;
@ -313,7 +310,6 @@ virStorageEncryptionParseNode(xmlNodePtr node,
VIR_FREE(format_str);
VIR_FREE(nodes);
virStorageEncryptionFree(encdef);
ctxt->node = saveNode;
return ret;
}

View File

@ -1781,7 +1781,7 @@ virStorageAuthDefPtr
virStorageAuthDefParse(xmlNodePtr node,
xmlXPathContextPtr ctxt)
{
xmlNodePtr saveNode = ctxt->node;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
virStorageAuthDefPtr ret = NULL;
xmlNodePtr secretnode = NULL;
g_autoptr(virStorageAuthDef) authdef = NULL;
@ -1832,7 +1832,6 @@ virStorageAuthDefParse(xmlNodePtr node,
ret = g_steal_pointer(&authdef);
cleanup:
ctxt->node = saveNode;
return ret;
}

View File

@ -6818,7 +6818,6 @@ virshDomainGetVcpuBitmap(vshControl *ctl,
xmlDocPtr xml = NULL;
xmlXPathContextPtr ctxt = NULL;
xmlNodePtr *nodes = NULL;
xmlNodePtr old;
int nnodes;
size_t i;
unsigned int curvcpus = 0;
@ -6853,8 +6852,6 @@ virshDomainGetVcpuBitmap(vshControl *ctl,
goto cleanup;
}
old = ctxt->node;
for (i = 0; i < nnodes; i++) {
ctxt->node = nodes[i];
@ -6868,8 +6865,6 @@ virshDomainGetVcpuBitmap(vshControl *ctl,
VIR_FREE(online);
}
ctxt->node = old;
if (virBitmapCountBits(ret) != curvcpus) {
vshError(ctl, "%s", _("Failed to retrieve vcpu state bitmap"));
virBitmapFree(ret);