conf: domain: Use VIR_XPATH_NODE_AUTORESTORE where appropriate

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2019-03-05 16:21:36 +01:00
parent 933f136844
commit 66a508d2cc

View File

@ -8109,11 +8109,10 @@ virDomainNetDefCoalesceParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
virNetDevCoalescePtr ret = NULL; virNetDevCoalescePtr ret = NULL;
xmlNodePtr save = NULL; VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned long long tmp = 0; unsigned long long tmp = 0;
VIR_AUTOFREE(char *) str = NULL; VIR_AUTOFREE(char *) str = NULL;
save = ctxt->node;
ctxt->node = node; ctxt->node = node;
str = virXPathString("string(./rx/frames/@max)", ctxt); str = virXPathString("string(./rx/frames/@max)", ctxt);
@ -8140,7 +8139,6 @@ virDomainNetDefCoalesceParseXML(xmlNodePtr node,
ret->rx_max_coalesced_frames = tmp; ret->rx_max_coalesced_frames = tmp;
cleanup: cleanup:
ctxt->node = save;
return ret; return ret;
error: error:
@ -8512,16 +8510,15 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def,
virCapsPtr caps, virCapsPtr caps,
unsigned int flags) unsigned int flags)
{ {
VIR_XPATH_NODE_AUTORESTORE(ctxt);
size_t i = 0, j; size_t i = 0, j;
int n; int n;
xmlNodePtr saved_node;
virCapsHostPtr host = &caps->host; virCapsHostPtr host = &caps->host;
VIR_AUTOFREE(xmlNodePtr *) list = NULL; VIR_AUTOFREE(xmlNodePtr *) list = NULL;
/* Check args and save context */ /* Check args and save context */
if (def == NULL || ctxt == NULL) if (def == NULL || ctxt == NULL)
return 0; return 0;
saved_node = ctxt->node;
/* Allocate a security labels based on XML */ /* Allocate a security labels based on XML */
if ((n = virXPathNodeSet("./seclabel", ctxt, &list)) < 0) if ((n = virXPathNodeSet("./seclabel", ctxt, &list)) < 0)
@ -8553,7 +8550,6 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def,
def->seclabels[i] = seclabel; def->seclabels[i] = seclabel;
} }
def->nseclabels = n; def->nseclabels = n;
ctxt->node = saved_node;
/* libvirt versions prior to 0.10.0 support just a single seclabel element /* libvirt versions prior to 0.10.0 support just a single seclabel element
* in guest's XML and model attribute can be suppressed if type is none or * in guest's XML and model attribute can be suppressed if type is none or
@ -8603,7 +8599,6 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def,
return 0; return 0;
error: error:
ctxt->node = saved_node;
for (; i > 0; i--) for (; i > 0; i--)
virSecurityLabelDefFree(def->seclabels[i - 1]); virSecurityLabelDefFree(def->seclabels[i - 1]);
VIR_FREE(def->seclabels); VIR_FREE(def->seclabels);
@ -8940,7 +8935,7 @@ virDomainDiskSourcePrivateDataParse(xmlNodePtr node,
unsigned int flags, unsigned int flags,
virDomainXMLOptionPtr xmlopt) virDomainXMLOptionPtr xmlopt)
{ {
xmlNodePtr saveNode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1; int ret = -1;
if (!(flags & VIR_DOMAIN_DEF_PARSE_STATUS) || if (!(flags & VIR_DOMAIN_DEF_PARSE_STATUS) ||
@ -8960,8 +8955,6 @@ virDomainDiskSourcePrivateDataParse(xmlNodePtr node,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = saveNode;
return ret; return ret;
} }
@ -8971,7 +8964,7 @@ virDomainDiskSourcePRParse(xmlNodePtr node,
xmlXPathContextPtr ctxt, xmlXPathContextPtr ctxt,
virStoragePRDefPtr *pr) virStoragePRDefPtr *pr)
{ {
xmlNodePtr saveNode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1; int ret = -1;
ctxt->node = node; ctxt->node = node;
@ -8986,7 +8979,6 @@ virDomainDiskSourcePRParse(xmlNodePtr node,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = saveNode;
return ret; return ret;
} }
@ -8998,7 +8990,7 @@ virDomainStorageSourceParse(xmlNodePtr node,
unsigned int flags) unsigned int flags)
{ {
int ret = -1; int ret = -1;
xmlNodePtr saveNode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr tmp; xmlNodePtr tmp;
ctxt->node = node; ctxt->node = node;
@ -9053,7 +9045,6 @@ virDomainStorageSourceParse(xmlNodePtr node,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = saveNode;
return ret; return ret;
} }
@ -9081,7 +9072,7 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
unsigned int flags, unsigned int flags,
virDomainXMLOptionPtr xmlopt) virDomainXMLOptionPtr xmlopt)
{ {
xmlNodePtr save_ctxt = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr source; xmlNodePtr source;
int ret = -1; int ret = -1;
VIR_AUTOUNREF(virStorageSourcePtr) backingStore = NULL; VIR_AUTOUNREF(virStorageSourcePtr) backingStore = NULL;
@ -9148,7 +9139,6 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = save_ctxt;
return ret; return ret;
} }
@ -9627,7 +9617,7 @@ virDomainDiskDefParsePrivateData(xmlXPathContextPtr ctxt,
virDomainXMLOptionPtr xmlopt) virDomainXMLOptionPtr xmlopt)
{ {
xmlNodePtr private_node = virXPathNode("./privateData", ctxt); xmlNodePtr private_node = virXPathNode("./privateData", ctxt);
xmlNodePtr save_node = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
int ret = -1; int ret = -1;
if (!xmlopt || if (!xmlopt ||
@ -9643,7 +9633,6 @@ virDomainDiskDefParsePrivateData(xmlXPathContextPtr ctxt,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = save_node;
return ret; return ret;
} }
@ -9664,7 +9653,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
{ {
virDomainDiskDefPtr def; virDomainDiskDefPtr def;
xmlNodePtr cur; xmlNodePtr cur;
xmlNodePtr save_ctxt = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
bool source = false; bool source = false;
virStorageEncryptionPtr encryption = NULL; virStorageEncryptionPtr encryption = NULL;
VIR_AUTOPTR(virStorageAuthDef) authdef = NULL; VIR_AUTOPTR(virStorageAuthDef) authdef = NULL;
@ -10081,7 +10070,6 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
cleanup: cleanup:
virStorageEncryptionFree(encryption); virStorageEncryptionFree(encryption);
ctxt->node = save_ctxt;
return def; return def;
error: error:
@ -10367,7 +10355,7 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
bool processedTarget = false; bool processedTarget = false;
int numaNode = -1; int numaNode = -1;
int ports = -1; int ports = -1;
xmlNodePtr saved = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
int rc; int rc;
VIR_AUTOFREE(char *) typeStr = NULL; VIR_AUTOFREE(char *) typeStr = NULL;
VIR_AUTOFREE(char *) idx = NULL; VIR_AUTOFREE(char *) idx = NULL;
@ -10695,7 +10683,6 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
} }
cleanup: cleanup:
ctxt->node = saved;
return def; return def;
error: error:
@ -10722,8 +10709,9 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt, xmlXPathContextPtr ctxt,
unsigned int flags) unsigned int flags)
{ {
VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainFSDefPtr def; virDomainFSDefPtr def;
xmlNodePtr cur, save_node = ctxt->node; xmlNodePtr cur;
VIR_AUTOFREE(char *) type = NULL; VIR_AUTOFREE(char *) type = NULL;
VIR_AUTOFREE(char *) fsdriver = NULL; VIR_AUTOFREE(char *) fsdriver = NULL;
VIR_AUTOFREE(char *) source = NULL; VIR_AUTOFREE(char *) source = NULL;
@ -10888,7 +10876,6 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error; goto error;
cleanup: cleanup:
ctxt->node = save_node;
return def; return def;
error: error:
@ -10906,7 +10893,7 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
{ {
virDomainActualNetDefPtr actual = NULL; virDomainActualNetDefPtr actual = NULL;
int ret = -1; int ret = -1;
xmlNodePtr save_ctxt = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr bandwidth_node = NULL; xmlNodePtr bandwidth_node = NULL;
xmlNodePtr vlanNode; xmlNodePtr vlanNode;
xmlNodePtr virtPortNode; xmlNodePtr virtPortNode;
@ -11066,7 +11053,6 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
error: error:
virDomainActualNetDefFree(actual); virDomainActualNetDefFree(actual);
ctxt->node = save_ctxt;
return ret; return ret;
} }
@ -11106,7 +11092,7 @@ virDomainChrSourceReconnectDefParseXML(virDomainChrSourceReconnectDefPtr def,
{ {
int ret = -1; int ret = -1;
int tmpVal; int tmpVal;
xmlNodePtr saveNode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr cur; xmlNodePtr cur;
VIR_AUTOFREE(char *) tmp = NULL; VIR_AUTOFREE(char *) tmp = NULL;
@ -11143,7 +11129,6 @@ virDomainChrSourceReconnectDefParseXML(virDomainChrSourceReconnectDefPtr def,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = saveNode;
return ret; return ret;
} }
@ -11165,7 +11150,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlNodePtr tmpNode; xmlNodePtr tmpNode;
virHashTablePtr filterparams = NULL; virHashTablePtr filterparams = NULL;
virDomainActualNetDefPtr actual = NULL; virDomainActualNetDefPtr actual = NULL;
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainChrSourceReconnectDef reconnect = {0}; virDomainChrSourceReconnectDef reconnect = {0};
int rv, val; int rv, val;
VIR_AUTOFREE(char *) macaddr = NULL; VIR_AUTOFREE(char *) macaddr = NULL;
@ -11949,7 +11934,6 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
} }
cleanup: cleanup:
ctxt->node = oldnode;
virDomainActualNetDefFree(actual); virDomainActualNetDefFree(actual);
virHashFree(filterparams); virHashFree(filterparams);
return def; return def;
@ -12829,7 +12813,7 @@ virDomainTPMDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags) unsigned int flags)
{ {
virDomainTPMDefPtr def; virDomainTPMDefPtr def;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
int nbackends; int nbackends;
VIR_AUTOFREE(char *) path = NULL; VIR_AUTOFREE(char *) path = NULL;
VIR_AUTOFREE(char *) model = NULL; VIR_AUTOFREE(char *) model = NULL;
@ -12908,7 +12892,6 @@ virDomainTPMDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error; goto error;
cleanup: cleanup:
ctxt->node = save;
return def; return def;
error: error:
@ -12957,7 +12940,7 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt, xmlXPathContextPtr ctxt,
unsigned int flags) unsigned int flags)
{ {
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainInputDefPtr def; virDomainInputDefPtr def;
VIR_AUTOFREE(char *) evdev = NULL; VIR_AUTOFREE(char *) evdev = NULL;
VIR_AUTOFREE(char *) type = NULL; VIR_AUTOFREE(char *) type = NULL;
@ -13099,7 +13082,6 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error; goto error;
cleanup: cleanup:
ctxt->node = save;
return def; return def;
error: error:
@ -13154,7 +13136,7 @@ virDomainTimerDefParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
virDomainTimerDefPtr def; virDomainTimerDefPtr def;
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr catchup; xmlNodePtr catchup;
int ret; int ret;
VIR_AUTOFREE(char *) name = NULL; VIR_AUTOFREE(char *) name = NULL;
@ -13264,8 +13246,6 @@ virDomainTimerDefParseXML(xmlNodePtr node,
} }
cleanup: cleanup:
ctxt->node = oldnode;
return def; return def;
error: error:
@ -13508,7 +13488,7 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def,
xmlXPathContextPtr ctxt, xmlXPathContextPtr ctxt,
unsigned int flags) unsigned int flags)
{ {
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainGraphicsListenDef newListen = {0}; virDomainGraphicsListenDef newListen = {0};
int nListens; int nListens;
int ret = -1; int ret = -1;
@ -13579,7 +13559,6 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def,
ret = 0; ret = 0;
cleanup: cleanup:
virDomainGraphicsListenDefClear(&newListen); virDomainGraphicsListenDefClear(&newListen);
ctxt->node = save;
return ret; return ret;
} }
@ -13668,7 +13647,7 @@ virDomainGraphicsDefParseXMLSDL(virDomainGraphicsDefPtr def,
xmlNodePtr node, xmlNodePtr node,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
int enableVal; int enableVal;
xmlNodePtr glNode; xmlNodePtr glNode;
int ret = -1; int ret = -1;
@ -13714,7 +13693,6 @@ virDomainGraphicsDefParseXMLSDL(virDomainGraphicsDefPtr def,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = save;
return ret; return ret;
} }
@ -14069,7 +14047,7 @@ virDomainGraphicsDefParseXMLEGLHeadless(virDomainGraphicsDefPtr def,
xmlNodePtr node, xmlNodePtr node,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr glNode; xmlNodePtr glNode;
ctxt->node = node; ctxt->node = node;
@ -14077,7 +14055,6 @@ virDomainGraphicsDefParseXMLEGLHeadless(virDomainGraphicsDefPtr def,
if ((glNode = virXPathNode("./gl", ctxt))) if ((glNode = virXPathNode("./gl", ctxt)))
def->data.egl_headless.rendernode = virXMLPropString(glNode, def->data.egl_headless.rendernode = virXMLPropString(glNode,
"rendernode"); "rendernode");
ctxt->node = save;
return 0; return 0;
} }
@ -14200,7 +14177,7 @@ virDomainSoundDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags) unsigned int flags)
{ {
virDomainSoundDefPtr def; virDomainSoundDefPtr def;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) model = NULL; VIR_AUTOFREE(char *) model = NULL;
if (VIR_ALLOC(def) < 0) if (VIR_ALLOC(def) < 0)
@ -14246,7 +14223,6 @@ virDomainSoundDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error; goto error;
cleanup: cleanup:
ctxt->node = save;
return def; return def;
error: error:
@ -14313,7 +14289,7 @@ virDomainRNGDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags) unsigned int flags)
{ {
virDomainRNGDefPtr def; virDomainRNGDefPtr def;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
int nbackends; int nbackends;
VIR_AUTOFREE(xmlNodePtr *) backends = NULL; VIR_AUTOFREE(xmlNodePtr *) backends = NULL;
VIR_AUTOFREE(char *) model = NULL; VIR_AUTOFREE(char *) model = NULL;
@ -14410,7 +14386,6 @@ virDomainRNGDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error; goto error;
cleanup: cleanup:
ctxt->node = save;
return def; return def;
error: error:
@ -14427,7 +14402,7 @@ virDomainMemballoonDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags) unsigned int flags)
{ {
virDomainMemballoonDefPtr def; virDomainMemballoonDefPtr def;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned int period = 0; unsigned int period = 0;
VIR_AUTOFREE(char *) model = NULL; VIR_AUTOFREE(char *) model = NULL;
VIR_AUTOFREE(char *) deflate = NULL; VIR_AUTOFREE(char *) deflate = NULL;
@ -14477,7 +14452,6 @@ virDomainMemballoonDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error; goto error;
cleanup: cleanup:
ctxt->node = save;
return def; return def;
error: error:
@ -14515,7 +14489,7 @@ virDomainShmemDefParseXML(virDomainXMLOptionPtr xmlopt,
virDomainShmemDefPtr def = NULL; virDomainShmemDefPtr def = NULL;
virDomainShmemDefPtr ret = NULL; virDomainShmemDefPtr ret = NULL;
xmlNodePtr msi = NULL; xmlNodePtr msi = NULL;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr server = NULL; xmlNodePtr server = NULL;
VIR_AUTOFREE(char *) tmp = NULL; VIR_AUTOFREE(char *) tmp = NULL;
@ -14596,7 +14570,6 @@ virDomainShmemDefParseXML(virDomainXMLOptionPtr xmlopt,
VIR_STEAL_PTR(ret, def); VIR_STEAL_PTR(ret, def);
cleanup: cleanup:
ctxt->node = save;
virDomainShmemDefFree(def); virDomainShmemDefFree(def);
return ret; return ret;
} }
@ -14745,7 +14718,7 @@ virSysinfoBaseBoardParseXML(xmlXPathContextPtr ctxt,
{ {
int ret = -1; int ret = -1;
size_t i, nboards = 0; size_t i, nboards = 0;
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
int n; int n;
VIR_AUTOFREE(virSysinfoBaseBoardDefPtr) boards = NULL; VIR_AUTOFREE(virSysinfoBaseBoardDefPtr) boards = NULL;
VIR_AUTOFREE(xmlNodePtr *) nodes = NULL; VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
@ -14786,7 +14759,6 @@ virSysinfoBaseBoardParseXML(xmlXPathContextPtr ctxt,
*nbaseBoard = nboards; *nbaseBoard = nboards;
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = oldnode;
return ret; return ret;
} }
@ -15117,7 +15089,7 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
{ {
virDomainVideoDefPtr def; virDomainVideoDefPtr def;
xmlNodePtr cur; xmlNodePtr cur;
xmlNodePtr saved = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) type = NULL; VIR_AUTOFREE(char *) type = NULL;
VIR_AUTOFREE(char *) heads = NULL; VIR_AUTOFREE(char *) heads = NULL;
VIR_AUTOFREE(char *) vram = NULL; VIR_AUTOFREE(char *) vram = NULL;
@ -15230,7 +15202,6 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
def->driver = virDomainVideoDriverDefParseXML(node); def->driver = virDomainVideoDriverDefParseXML(node);
cleanup: cleanup:
ctxt->node = saved;
return def; return def;
error: error:
@ -15246,7 +15217,7 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags) unsigned int flags)
{ {
virDomainHostdevDefPtr def; virDomainHostdevDefPtr def;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) mode = virXMLPropString(node, "mode"); VIR_AUTOFREE(char *) mode = virXMLPropString(node, "mode");
VIR_AUTOFREE(char *) type = virXMLPropString(node, "type"); VIR_AUTOFREE(char *) type = virXMLPropString(node, "type");
@ -15307,7 +15278,6 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
} }
cleanup: cleanup:
ctxt->node = save;
return def; return def;
error: error:
@ -15522,7 +15492,7 @@ virDomainRedirFilterDefParseXML(xmlNodePtr node,
{ {
int n; int n;
size_t i; size_t i;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainRedirFilterDefPtr def = NULL; virDomainRedirFilterDefPtr def = NULL;
VIR_AUTOFREE(xmlNodePtr *) nodes = NULL; VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
@ -15545,7 +15515,6 @@ virDomainRedirFilterDefParseXML(xmlNodePtr node,
def->usbdevs[def->nusbdevs++] = usbdev; def->usbdevs[def->nusbdevs++] = usbdev;
} }
ctxt->node = save;
return def; return def;
error: error:
@ -15662,7 +15631,7 @@ virDomainMemorySourceDefParseXML(xmlNodePtr node,
virDomainMemoryDefPtr def) virDomainMemoryDefPtr def)
{ {
int ret = -1; int ret = -1;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node; ctxt->node = node;
VIR_AUTOFREE(char *) nodemask = NULL; VIR_AUTOFREE(char *) nodemask = NULL;
@ -15709,7 +15678,6 @@ virDomainMemorySourceDefParseXML(xmlNodePtr node,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = save;
return ret; return ret;
} }
@ -15720,7 +15688,7 @@ virDomainMemoryTargetDefParseXML(xmlNodePtr node,
virDomainMemoryDefPtr def) virDomainMemoryDefPtr def)
{ {
int ret = -1; int ret = -1;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
ctxt->node = node; ctxt->node = node;
int rv; int rv;
@ -15762,7 +15730,6 @@ virDomainMemoryTargetDefParseXML(xmlNodePtr node,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = save;
return ret; return ret;
} }
@ -15771,7 +15738,7 @@ static virDomainSEVDefPtr
virDomainSEVDefParseXML(xmlNodePtr sevNode, virDomainSEVDefParseXML(xmlNodePtr sevNode,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainSEVDefPtr def; virDomainSEVDefPtr def;
unsigned long policy; unsigned long policy;
VIR_AUTOFREE(char *) type = NULL; VIR_AUTOFREE(char *) type = NULL;
@ -15824,7 +15791,6 @@ virDomainSEVDefParseXML(xmlNodePtr sevNode,
def->session = virXPathString("string(./session)", ctxt); def->session = virXPathString("string(./session)", ctxt);
cleanup: cleanup:
ctxt->node = save;
return def; return def;
error: error:
@ -15839,7 +15805,7 @@ virDomainMemoryDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt, xmlXPathContextPtr ctxt,
unsigned int flags) unsigned int flags)
{ {
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr node; xmlNodePtr node;
virDomainMemoryDefPtr def; virDomainMemoryDefPtr def;
int val; int val;
@ -15903,12 +15869,10 @@ virDomainMemoryDefParseXML(virDomainXMLOptionPtr xmlopt,
&def->info, flags) < 0) &def->info, flags) < 0)
goto error; goto error;
ctxt->node = save;
return def; return def;
error: error:
virDomainMemoryDefFree(def); virDomainMemoryDefFree(def);
ctxt->node = save;
return NULL; return NULL;
} }
@ -15918,7 +15882,7 @@ virDomainIOMMUDefParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
virDomainIOMMUDefPtr ret = NULL; virDomainIOMMUDefPtr ret = NULL;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr driver; xmlNodePtr driver;
int val; int val;
VIR_AUTOFREE(char *) tmp = NULL; VIR_AUTOFREE(char *) tmp = NULL;
@ -15982,7 +15946,6 @@ virDomainIOMMUDefParseXML(xmlNodePtr node,
VIR_STEAL_PTR(ret, iommu); VIR_STEAL_PTR(ret, iommu);
cleanup: cleanup:
ctxt->node = save;
return ret; return ret;
} }
@ -15994,7 +15957,7 @@ virDomainVsockDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags) unsigned int flags)
{ {
virDomainVsockDefPtr ret = NULL; virDomainVsockDefPtr ret = NULL;
xmlNodePtr save = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr cid; xmlNodePtr cid;
int val; int val;
VIR_AUTOFREE(char *) tmp = NULL; VIR_AUTOFREE(char *) tmp = NULL;
@ -16046,7 +16009,6 @@ virDomainVsockDefParseXML(virDomainXMLOptionPtr xmlopt,
VIR_STEAL_PTR(ret, vsock); VIR_STEAL_PTR(ret, vsock);
cleanup: cleanup:
ctxt->node = save;
return ret; return ret;
} }
@ -17770,7 +17732,7 @@ virDomainIdmapDefParseXML(xmlXPathContextPtr ctxt,
{ {
size_t i; size_t i;
virDomainIdMapEntryPtr idmap = NULL; virDomainIdMapEntryPtr idmap = NULL;
xmlNodePtr save_ctxt = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
if (VIR_ALLOC_N(idmap, num) < 0) if (VIR_ALLOC_N(idmap, num) < 0)
goto cleanup; goto cleanup;
@ -17799,7 +17761,6 @@ virDomainIdmapDefParseXML(xmlXPathContextPtr ctxt,
} }
cleanup: cleanup:
ctxt->node = save_ctxt;
return idmap; return idmap;
} }
@ -18175,7 +18136,7 @@ virDomainHugepagesParseXML(xmlNodePtr node,
virDomainHugePagePtr hugepage) virDomainHugePagePtr hugepage)
{ {
int ret = -1; int ret = -1;
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) nodeset = NULL; VIR_AUTOFREE(char *) nodeset = NULL;
ctxt->node = node; ctxt->node = node;
@ -18204,7 +18165,6 @@ virDomainHugepagesParseXML(xmlNodePtr node,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = oldnode;
return ret; return ret;
} }
@ -18213,8 +18173,8 @@ static virDomainResourceDefPtr
virDomainResourceDefParse(xmlNodePtr node, virDomainResourceDefParse(xmlNodePtr node,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainResourceDefPtr def = NULL; virDomainResourceDefPtr def = NULL;
xmlNodePtr tmp = ctxt->node;
ctxt->node = node; ctxt->node = node;
@ -18228,11 +18188,9 @@ virDomainResourceDefParse(xmlNodePtr node,
goto error; goto error;
} }
ctxt->node = tmp;
return def; return def;
error: error:
ctxt->node = tmp;
virDomainResourceDefFree(def); virDomainResourceDefFree(def);
return NULL; return NULL;
} }
@ -18797,7 +18755,7 @@ virDomainCachetuneDefParseCache(xmlXPathContextPtr ctxt,
xmlNodePtr node, xmlNodePtr node,
virResctrlAllocPtr alloc) virResctrlAllocPtr alloc)
{ {
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned int level; unsigned int level;
unsigned int cache; unsigned int cache;
int type; int type;
@ -18859,7 +18817,6 @@ virDomainCachetuneDefParseCache(xmlXPathContextPtr ctxt,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = oldnode;
return ret; return ret;
} }
@ -18931,7 +18888,7 @@ virDomainResctrlMonDefParse(virDomainDefPtr def,
virDomainResctrlDefPtr resctrl) virDomainResctrlDefPtr resctrl)
{ {
virDomainResctrlMonDefPtr domresmon = NULL; virDomainResctrlMonDefPtr domresmon = NULL;
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned int level = 0; unsigned int level = 0;
size_t i = 0; size_t i = 0;
int n = 0; int n = 0;
@ -19026,7 +18983,6 @@ virDomainResctrlMonDefParse(virDomainDefPtr def,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = oldnode;
virDomainResctrlMonDefFree(domresmon); virDomainResctrlMonDefFree(domresmon);
return ret; return ret;
} }
@ -19089,7 +19045,7 @@ virDomainCachetuneDefParse(virDomainDefPtr def,
xmlNodePtr node, xmlNodePtr node,
unsigned int flags) unsigned int flags)
{ {
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainResctrlDefPtr resctrl = NULL; virDomainResctrlDefPtr resctrl = NULL;
ssize_t i = 0; ssize_t i = 0;
int n; int n;
@ -19153,7 +19109,6 @@ virDomainCachetuneDefParse(virDomainDefPtr def,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = oldnode;
virDomainResctrlDefFree(resctrl); virDomainResctrlDefFree(resctrl);
return ret; return ret;
} }
@ -19246,7 +19201,7 @@ virDomainMemorytuneDefParseMemory(xmlXPathContextPtr ctxt,
xmlNodePtr node, xmlNodePtr node,
virResctrlAllocPtr alloc) virResctrlAllocPtr alloc)
{ {
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
unsigned int id; unsigned int id;
unsigned int bandwidth; unsigned int bandwidth;
int ret = -1; int ret = -1;
@ -19285,7 +19240,6 @@ virDomainMemorytuneDefParseMemory(xmlXPathContextPtr ctxt,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = oldnode;
return ret; return ret;
} }
@ -19296,7 +19250,7 @@ virDomainMemorytuneDefParse(virDomainDefPtr def,
xmlNodePtr node, xmlNodePtr node,
unsigned int flags) unsigned int flags)
{ {
xmlNodePtr oldnode = ctxt->node; VIR_XPATH_NODE_AUTORESTORE(ctxt);
virDomainResctrlDefPtr resctrl = NULL; virDomainResctrlDefPtr resctrl = NULL;
VIR_AUTOPTR(virBitmap) vcpus = NULL; VIR_AUTOPTR(virBitmap) vcpus = NULL;
VIR_AUTOFREE(xmlNodePtr *) nodes = NULL; VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
@ -19356,7 +19310,6 @@ virDomainMemorytuneDefParse(virDomainDefPtr def,
ret = 0; ret = 0;
cleanup: cleanup:
ctxt->node = oldnode;
virDomainResctrlDefFree(resctrl); virDomainResctrlDefFree(resctrl);
return ret; return ret;
} }