[PATCH 13/13] src/xenxs: Utilize more of VIR_(APPEND|INSERT|DELETE)_ELEMENT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
---
 src/xenxs/xen_sxpr.c | 43 +++++++++++++++++--------------------------
 src/xenxs/xen_xm.c   | 27 ++++++++-------------------
 2 files changed, 25 insertions(+), 45 deletions(-)

diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c
index d366b1b..1319c74 100644
--- a/src/xenxs/xen_sxpr.c
+++ b/src/xenxs/xen_sxpr.c
@@ -601,10 +601,9 @@ xenParseSxprNets(virDomainDefPtr def,
                 VIR_STRDUP(net->model, "netfront") < 0)
                 goto cleanup;
 
-            if (VIR_REALLOC_N(def->nets, def->nnets + 1) < 0)
+            if (VIR_APPEND_ELEMENT(def->nets, def->nnets, net) < 0)
                 goto cleanup;
 
-            def->nets[def->nnets++] = net;
             vif_index++;
         }
     }
@@ -685,12 +684,11 @@ xenParseSxprSound(virDomainDefPtr def,
                 goto error;
             }
 
-            if (VIR_REALLOC_N(def->sounds, def->nsounds+1) < 0) {
+            if (VIR_APPEND_ELEMENT(def->sounds, def->nsounds, sound) < 0) {
                 virDomainSoundDefFree(sound);
                 goto error;
             }
 
-            def->sounds[def->nsounds++] = sound;
             offset = offset2 ? offset2 + 1 : NULL;
         } while (offset);
     }
@@ -1057,10 +1055,8 @@ xenParseSxprPCI(virDomainDefPtr def,
         dev->source.subsys.u.pci.addr.slot = slotID;
         dev->source.subsys.u.pci.addr.function = funcID;
 
-        if (VIR_REALLOC_N(def->hostdevs, def->nhostdevs+1) < 0)
+        if (VIR_APPEND_ELEMENT(def->hostdevs, def->nhostdevs, dev) < 0)
             goto error;
-
-        def->hostdevs[def->nhostdevs++] = dev;
     }
 
     return 0;
@@ -1326,11 +1322,10 @@ xenParseSxpr(const struct sexpr *root,
             disk->bus = VIR_DOMAIN_DISK_BUS_IDE;
             disk->readonly = true;
 
-            if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0) {
+            if (VIR_APPEND_ELEMENT(def->disks, def->ndisks, disk) < 0) {
                 virDomainDiskDefFree(disk);
                 goto error;
             }
-            def->disks[def->ndisks++] = disk;
         }
     }
 
@@ -1361,11 +1356,10 @@ xenParseSxpr(const struct sexpr *root,
                 }
                 disk->bus = VIR_DOMAIN_DISK_BUS_FDC;
 
-                if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0) {
+                if (VIR_APPEND_ELEMENT(def->disks, def->ndisks, disk) < 0) {
                     virDomainDiskDefFree(disk);
                     goto error;
                 }
-                def->disks[def->ndisks++] = disk;
             }
         }
     }
@@ -1395,13 +1389,12 @@ xenParseSxpr(const struct sexpr *root,
                         virDomainChrDefPtr chr;
                         if ((chr = xenParseSxprChar(tmp, tty)) == NULL)
                             goto error;
-                        if (VIR_REALLOC_N(def->serials, def->nserials+1) < 0) {
-                            virDomainChrDefFree(chr);
-                            goto error;
-                        }
                         chr->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL;
                         chr->target.port = def->nserials + ports_skipped;
-                        def->serials[def->nserials++] = chr;
+                        if (VIR_APPEND_ELEMENT(def->serials, def->nserials, chr) < 0) {
+                            virDomainChrDefFree(chr);
+                            goto error;
+                        }
                     }
                     else
                         ports_skipped++;
@@ -1417,13 +1410,12 @@ xenParseSxpr(const struct sexpr *root,
                 virDomainChrDefPtr chr;
                 if ((chr = xenParseSxprChar(tmp, tty)) == NULL)
                     goto error;
-                if (VIR_REALLOC_N(def->serials, def->nserials+1) < 0) {
-                    virDomainChrDefFree(chr);
-                    goto error;
-                }
                 chr->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL;
                 chr->target.port = 0;
-                def->serials[def->nserials++] = chr;
+                if (VIR_APPEND_ELEMENT(def->serials, def->nserials, chr) < 0) {
+                    virDomainChrDefFree(chr);
+                    goto error;
+                }
             }
         }
 
@@ -1433,13 +1425,12 @@ xenParseSxpr(const struct sexpr *root,
             /* XXX does XenD stuff parallel port tty info into xenstore somewhere ? */
             if ((chr = xenParseSxprChar(tmp, NULL)) == NULL)
                 goto error;
-            if (VIR_REALLOC_N(def->parallels, def->nparallels+1) < 0) {
-                virDomainChrDefFree(chr);
-                goto error;
-            }
             chr->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL;
             chr->target.port = 0;
-            def->parallels[def->nparallels++] = chr;
+            if (VIR_APPEND_ELEMENT(def->parallels, def->nparallels, chr) < 0) {
+                virDomainChrDefFree(chr);
+                goto error;
+            }
         }
     } else if (def->id != 0) {
         if (VIR_ALLOC_N(def->consoles, 1) < 0)
diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c
index 3a57547..a70c5e3 100644
--- a/src/xenxs/xen_xm.c
+++ b/src/xenxs/xen_xm.c
@@ -608,10 +608,8 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
                 disk->shared = true;
 
             /* Maintain list in sorted order according to target device name */
-            if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0)
+            if (VIR_APPEND_ELEMENT(def->disks, def->ndisks, disk) < 0)
                 goto cleanup;
-            def->disks[def->ndisks++] = disk;
-            disk = NULL;
 
             skipdisk:
             list = list->next;
@@ -637,10 +635,8 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
             disk->bus = VIR_DOMAIN_DISK_BUS_IDE;
             disk->readonly = true;
 
-            if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0)
+            if (VIR_APPEND_ELEMENT(def->disks, def->ndisks, disk) < 0)
                 goto cleanup;
-            def->disks[def->ndisks++] = disk;
-            disk = NULL;
         }
     }
 
@@ -778,10 +774,8 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
                 VIR_STRDUP(net->ifname, vifname) < 0)
                 goto cleanup;
 
-            if (VIR_REALLOC_N(def->nets, def->nnets+1) < 0)
+            if (VIR_APPEND_ELEMENT(def->nets, def->nnets, net) < 0)
                 goto cleanup;
-            def->nets[def->nnets++] = net;
-            net = NULL;
 
         skipnic:
             list = list->next;
@@ -869,12 +863,10 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
             hostdev->source.subsys.u.pci.addr.slot = slotID;
             hostdev->source.subsys.u.pci.addr.function = funcID;
 
-            if (VIR_REALLOC_N(def->hostdevs, def->nhostdevs+1) < 0) {
+            if (VIR_APPEND_ELEMENT(def->hostdevs, def->nhostdevs, hostdev) < 0) {
                 virDomainHostdevDefFree(hostdev);
                 goto cleanup;
             }
-            def->hostdevs[def->nhostdevs++] = hostdev;
-            hostdev = NULL;
 
         skippci:
             list = list->next;
@@ -1084,16 +1076,13 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
                 if (!(chr = xenParseSxprChar(port, NULL)))
                     goto cleanup;
 
-                if (VIR_REALLOC_N(def->serials, def->nserials+1) < 0) {
-                    virDomainChrDefFree(chr);
-                    goto cleanup;
-                }
-
                 chr->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL;
                 chr->target.port = portnum;
 
-                def->serials[def->nserials++] = chr;
-                chr = NULL;
+                if (VIR_APPEND_ELEMENT(def->serials, def->nserials, chr) < 0) {
+                    virDomainChrDefFree(chr);
+                    goto cleanup;
+                }
 
                 list = list->next;
             }
-- 
1.9.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]