On 5/4/21 1:40 PM, Kristina Hanicova wrote: > Signed-off-by: Kristina Hanicova <khanicov@xxxxxxxxxx> > --- > src/conf/domain_conf.c | 189 ++++++++++++++++++----------------------- > 1 file changed, 82 insertions(+), 107 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 1142b1214a..365879ea98 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -8085,48 +8085,34 @@ virSecurityDeviceLabelDefParseXML(virSecurityDeviceLabelDef ***seclabels_rtn, > */ > static virDomainLeaseDef * > virDomainLeaseDefParseXML(xmlNodePtr node, > - xmlXPathContextPtr ctxt G_GNUC_UNUSED) > + xmlXPathContextPtr ctxt) > { > virDomainLeaseDef *def; > - xmlNodePtr cur; > g_autofree char *lockspace = NULL; > g_autofree char *key = NULL; > g_autofree char *path = NULL; > g_autofree char *offset = NULL; > + VIR_XPATH_NODE_AUTORESTORE(ctxt) > > + ctxt->node = node; > def = g_new0(virDomainLeaseDef, 1); > > - cur = node->children; > - while (cur != NULL) { > - if (cur->type == XML_ELEMENT_NODE) { > - if (!key && virXMLNodeNameEqual(cur, "key")) { > - if (!(key = virXMLNodeContentString(cur))) > - goto error; > - } else if (!lockspace && > - virXMLNodeNameEqual(cur, "lockspace")) { > - if (!(lockspace = virXMLNodeContentString(cur))) > - goto error; > - } else if (!path && > - virXMLNodeNameEqual(cur, "target")) { > - path = virXMLPropString(cur, "path"); > - offset = virXMLPropString(cur, "offset"); > - } > - } > - cur = cur->next; > - } > - > - if (!key) { > + if (!(key = virXPathString("string(./key)", ctxt))) { > virReportError(VIR_ERR_XML_ERROR, "%s", > _("Missing 'key' element for lease")); > goto error; > } > - if (!path) { > + > + if (!(lockspace = virXPathString("string(./lockspace)", ctxt))) > + goto error; > + > + if (!(path = virXPathString("string(./target/@path)", ctxt))) { > virReportError(VIR_ERR_XML_ERROR, "%s", > _("Missing 'target' element for lease")); > goto error; > } > > - if (offset && > + if ((offset = virXPathString("string(./target/@offset)", ctxt)) && > virStrToLong_ull(offset, NULL, 10, &def->offset) < 0) { > virReportError(VIR_ERR_XML_ERROR, > _("Malformed lease target offset %s"), offset); > @@ -9464,9 +9450,8 @@ virDomainControllerDefParseXML(virDomainXMLOption *xmlopt, > { > g_autoptr(virDomainControllerDef) def = NULL; > virDomainControllerType type = 0; > - xmlNodePtr cur = NULL; > - bool processedModel = false; > - bool processedTarget = false; > + xmlNodePtr driver = NULL; > + xmlNodePtr target = NULL; > int numaNode = -1; > int ports = -1; > VIR_XPATH_NODE_AUTORESTORE(ctxt) Looks like you meant to split these? Michal