]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Allow controller XML parsing to use XPath context
authorJán Tomko <jtomko@redhat.com>
Tue, 13 Aug 2013 13:10:17 +0000 (15:10 +0200)
committerJán Tomko <jtomko@redhat.com>
Tue, 27 Aug 2013 15:42:29 +0000 (17:42 +0200)
virDomainParseScaledValue requires it.

src/conf/domain_conf.c

index ffb6a56da4f6224d0289cc4b345d9689d2447a5f..682b7e9677b430a89a4f48d065e80684961b7d9a 100644 (file)
@@ -5670,6 +5670,7 @@ virDomainControllerModelTypeFromString(const virDomainControllerDefPtr def,
  */
 static virDomainControllerDefPtr
 virDomainControllerDefParseXML(xmlNodePtr node,
+                               xmlXPathContextPtr ctxt,
                                unsigned int flags)
 {
     virDomainControllerDefPtr def;
@@ -5678,6 +5679,9 @@ virDomainControllerDefParseXML(xmlNodePtr node,
     char *idx = NULL;
     char *model = NULL;
     char *queues = NULL;
+    xmlNodePtr saved = ctxt->node;
+
+    ctxt->node = node;
 
     if (VIR_ALLOC(def) < 0)
         return NULL;
@@ -5819,6 +5823,7 @@ virDomainControllerDefParseXML(xmlNodePtr node,
     }
 
 cleanup:
+    ctxt->node = saved;
     VIR_FREE(type);
     VIR_FREE(idx);
     VIR_FREE(model);
@@ -9491,7 +9496,8 @@ virDomainDeviceDefParse(const char *xmlStr,
             goto error;
         break;
     case VIR_DOMAIN_DEVICE_CONTROLLER:
-        if (!(dev->data.controller = virDomainControllerDefParseXML(node, flags)))
+        if (!(dev->data.controller = virDomainControllerDefParseXML(node, ctxt,
+                                                                    flags)))
             goto error;
         break;
     case VIR_DOMAIN_DEVICE_GRAPHICS:
@@ -11699,6 +11705,7 @@ virDomainDefParseXML(xmlDocPtr xml,
 
     for (i = 0; i < n; i++) {
         virDomainControllerDefPtr controller = virDomainControllerDefParseXML(nodes[i],
+                                                                              ctxt,
                                                                               flags);
         if (!controller)
             goto error;