commit 600871eef1a8e7d2957802502ae382b977ec87cc
Author: Anton Protopopov <aspsk@altlinux.org>
Date:   Mon Dec 15 18:20:06 2008 +0300

    Fix a SIGSEGV bug

diff --git a/src/openvz_driver.c b/src/openvz_driver.c
index 95ac7dc..6eaadc8 100644
--- a/src/openvz_driver.c
+++ b/src/openvz_driver.c
@@ -694,17 +694,17 @@ openvzDomainDefineXML(virConnectPtr conn, const char *xml)
     if (openvzDomainSetNetworkConfig(conn, vm->def) < 0)
         goto cleanup;
 
-    if (vm->def->vcpus > 0) {
-        if (openvzDomainSetVcpus(dom, vm->def->vcpus) < 0) {
-            openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                     "%s", _("Could not set number of virtual cpu"));
-             goto cleanup;
-        }
-    }
-
     dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
-    if (dom)
+    if (dom) {
         dom->id = -1;
+        if (vm->def->vcpus > 0) {
+            if (openvzDomainSetVcpus(dom, vm->def->vcpus) < 0) {
+                openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+                         "%s", _("Could not set number of virtual cpu"));
+                 goto cleanup;
+            }
+        }
+    }
 
 cleanup:
     virDomainDefFree(vmdef);
@@ -779,18 +779,18 @@ openvzDomainCreateXML(virConnectPtr conn, const char *xml,
     vm->def->id = vm->pid;
     vm->state = VIR_DOMAIN_RUNNING;
 
-    if (vm->def->vcpus > 0) {
-        if (openvzDomainSetVcpus(dom, vm->def->vcpus) < 0) {
-            openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+    dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
+    if (dom) {
+        dom->id = vm->def->id;
+        if (vm->def->vcpus > 0) {
+            if (openvzDomainSetVcpus(dom, vm->def->vcpus) < 0) {
+                openvzError(conn, VIR_ERR_INTERNAL_ERROR,
                         "%s", _("Could not set number of virtual cpu"));
-            goto cleanup;
+                goto cleanup;
+            }
         }
     }
 
-    dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
-    if (dom)
-        dom->id = vm->def->id;
-
 cleanup:
     virDomainDefFree(vmdef);
     cmdExecFree(progcreate);
