]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
qemu: Fix compilation error when enum variable size differs from 'int'
authorPeter Krempa <pkrempa@redhat.com>
Mon, 25 May 2015 15:14:57 +0000 (17:14 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 27 May 2015 07:06:40 +0000 (09:06 +0200)
Since commit bcd9a564b631aa virDomainNumatuneGetMode returns the value
via a pointer rather than in the return value. The change triggered
problems with platforms where the compiler decides to use a data type of
size different than integer at the point where we typecast it.

Work around the issue by using an intermediate variable of the correct
type that gets casted back by the default typecasting rules.

src/qemu/qemu_driver.c

index aa0acdef00487931f249a28cf069a801da885882..1233d8fa32eaf0e189177cf3ff709612c9ed9a03 100644 (file)
@@ -10524,6 +10524,7 @@ qemuDomainGetNumaParameters(virDomainPtr dom,
     size_t i;
     virDomainObjPtr vm = NULL;
     virDomainDefPtr persistentDef = NULL;
+    virDomainNumatuneMemMode tmpmode = VIR_DOMAIN_NUMATUNE_MEM_STRICT;
     char *nodeset = NULL;
     int ret = -1;
     virCapsPtr caps = NULL;
@@ -10567,12 +10568,12 @@ qemuDomainGetNumaParameters(virDomainPtr dom,
 
         switch (i) {
         case 0: /* fill numa mode here */
+            ignore_value(virDomainNumatuneGetMode(def->numa, -1, &tmpmode));
+
             if (virTypedParameterAssign(param, VIR_DOMAIN_NUMA_MODE,
-                                        VIR_TYPED_PARAM_INT, 0) < 0)
+                                        VIR_TYPED_PARAM_INT, tmpmode) < 0)
                 goto cleanup;
 
-            virDomainNumatuneGetMode(def->numa, -1,
-                                     (virDomainNumatuneMemMode *) &param->value.i);
             break;
 
         case 1: /* fill numa nodeset here */