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

Re: [libvirt] [PATCH] Fix warning about using an uninitialized next_unit value



On 03/06/13 18:22, Jiri Denemark wrote:
Using an uninitialized value and a bool saying if the value is valid may
confuse compilators.
---
  src/conf/domain_conf.c | 24 +++++++++++++-----------
  1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 46d49a2..6dc8cf3 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -3883,26 +3883,28 @@ virDomainHostdevAssignAddress(virDomainXMLOptionPtr xmlopt,
                                virDomainDefPtr def,
                                virDomainHostdevDefPtr hostdev)
  {
-    int next_unit;
+    int next_unit = 0;
      unsigned nscsi_controllers = 0;
-    bool found = false;
      int i;
+    int ret;
if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)
          return -1;
- for (i = 0; i < def->ncontrollers && !found; i++) {
+    for (i = 0; i < def->ncontrollers; i++) {
          if (def->controllers[i]->type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
              continue;
nscsi_controllers++;
-        next_unit = virDomainControllerSCSINextUnit(def,
-                                                    xmlopt->config.hasWideScsiBus ?
-                                                    SCSI_WIDE_BUS_MAX_CONT_UNIT :
-                                                    SCSI_NARROW_BUS_MAX_CONT_UNIT,
-                                                    def->controllers[i]->idx);
-        if (next_unit >= 0)
-            found = true;
+        ret = virDomainControllerSCSINextUnit(def,
+                                              xmlopt->config.hasWideScsiBus ?
+                                              SCSI_WIDE_BUS_MAX_CONT_UNIT :
+                                              SCSI_NARROW_BUS_MAX_CONT_UNIT,
+                                              def->controllers[i]->idx);
+        if (ret >= 0) {
+            next_unit = ret;
+            break;
+        }
      }
hostdev->info->type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE;
@@ -3912,7 +3914,7 @@ virDomainHostdevAssignAddress(virDomainXMLOptionPtr xmlopt,
                                             nscsi_controllers;

This statement still uses the bool variable "found":

    hostdev->info->addr.drive.controller = found ?
                                           def->controllers[i - 1]->idx :
                                           nscsi_controllers;


And the controller index "i - 1" above should be changed to "i" instead. Since
the second expression of the for loop was changed.

Osier


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