[PATCH] domain_conf: remove else after return / goto

Kristina Hanicova posted 1 patch 1 year, 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/58c14ccfd4dc97be3930272f859e7e046d34e894.1658321985.git.khanicov@redhat.com
src/conf/domain_conf.c | 55 ++++++++++++++++++++++++------------------
1 file changed, 31 insertions(+), 24 deletions(-)
[PATCH] domain_conf: remove else after return / goto
Posted by Kristina Hanicova 1 year, 9 months ago
Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
---
 src/conf/domain_conf.c | 55 ++++++++++++++++++++++++------------------
 1 file changed, 31 insertions(+), 24 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 44a01ab628..bc4b74c1c8 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -4084,8 +4084,8 @@ virDomainObjGetPersistentDef(virDomainXMLOption *xmlopt,
 
     if (domain->newDef)
         return domain->newDef;
-    else
-        return domain->def;
+
+    return domain->def;
 }
 
 
@@ -4223,8 +4223,8 @@ virDomainObjGetOneDefState(virDomainObj *vm,
 
     if (virDomainObjIsActive(vm) && flags & VIR_DOMAIN_AFFECT_CONFIG)
         return vm->newDef;
-    else
-        return vm->def;
+
+    return vm->def;
 }
 
 
@@ -6029,7 +6029,9 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
                              VIR_XML_PROP_NONZERO,
                              &scsisrc->sgio)) < 0) {
         return -1;
-    } else if (rv > 0) {
+    }
+
+    if (rv > 0) {
         if (def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
                            _("sgio is only supported for scsi host device"));
@@ -6041,8 +6043,9 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
                                      VIR_XML_PROP_NONE,
                                      &scsisrc->rawio)) < 0) {
         return -1;
-    } else if (rv > 0 &&
-               def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
+    }
+
+    if (rv > 0 && def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("rawio is only supported for scsi host device"));
         return -1;
@@ -8056,15 +8059,15 @@ virDomainControllerModelTypeFromString(const virDomainControllerDef *def,
 {
     if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
         return virDomainControllerModelSCSITypeFromString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
         return virDomainControllerModelUSBTypeFromString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
         return virDomainControllerModelPCITypeFromString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
         return virDomainControllerModelIDETypeFromString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
         return virDomainControllerModelVirtioSerialTypeFromString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
         return virDomainControllerModelISATypeFromString(model);
 
     return -1;
@@ -8077,15 +8080,15 @@ virDomainControllerModelTypeToString(virDomainControllerDef *def,
 {
     if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
         return virDomainControllerModelSCSITypeToString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
         return virDomainControllerModelUSBTypeToString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
         return virDomainControllerModelPCITypeToString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
         return virDomainControllerModelIDETypeToString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
         return virDomainControllerModelVirtioSerialTypeToString(model);
-    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
+    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
         return virDomainControllerModelISATypeToString(model);
 
     return NULL;
@@ -9915,9 +9918,10 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
 
     ctxt->node = cur;
 
-    if ((nsources = virXPathNodeSet("./source", ctxt, &sources)) < 0) {
+    if ((nsources = virXPathNodeSet("./source", ctxt, &sources)) < 0)
         goto error;
-    } else if (nsources > 0) {
+
+    if (nsources > 0) {
         /* Parse only the first source element since only one is used
          * for chardev devices, the only exception is UDP type, where
          * user can specify two source elements. */
@@ -9926,7 +9930,8 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
                            _("only one source element is allowed for "
                              "character device"));
             goto error;
-        } else if (nsources > 2) {
+        }
+        if (nsources > 2) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
                            _("only two source elements are allowed for "
                              "character device"));
@@ -10006,9 +10011,10 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
         }
     }
 
-    if ((nlogs = virXPathNodeSet("./log", ctxt, &logs)) < 0) {
+    if ((nlogs = virXPathNodeSet("./log", ctxt, &logs)) < 0)
         goto error;
-    } else if (nlogs == 1) {
+
+    if (nlogs == 1) {
         if (virDomainChrSourceDefParseLog(def, logs[0]) < 0)
             goto error;
     } else if (nlogs > 1) {
@@ -10018,9 +10024,10 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
         goto error;
     }
 
-    if ((nprotocols = virXPathNodeSet("./protocol", ctxt, &protocols)) < 0) {
+    if ((nprotocols = virXPathNodeSet("./protocol", ctxt, &protocols)) < 0)
         goto error;
-    } else if (nprotocols == 1) {
+
+    if (nprotocols == 1) {
         if (virDomainChrSourceDefParseProtocol(def, protocols[0]) < 0)
             goto error;
     } else if (nprotocols > 1) {
-- 
2.35.3
Re: [PATCH] domain_conf: remove else after return / goto
Posted by Daniel P. Berrangé 1 year, 9 months ago
What's the reasoning for making this change ?

On Wed, Jul 20, 2022 at 02:59:58PM +0200, Kristina Hanicova wrote:
> Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
> ---
>  src/conf/domain_conf.c | 55 ++++++++++++++++++++++++------------------
>  1 file changed, 31 insertions(+), 24 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 44a01ab628..bc4b74c1c8 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -4084,8 +4084,8 @@ virDomainObjGetPersistentDef(virDomainXMLOption *xmlopt,
>  
>      if (domain->newDef)
>          return domain->newDef;
> -    else
> -        return domain->def;
> +
> +    return domain->def;
>  }
> @@ -4223,8 +4223,8 @@ virDomainObjGetOneDefState(virDomainObj *vm,
>  
>      if (virDomainObjIsActive(vm) && flags & VIR_DOMAIN_AFFECT_CONFIG)
>          return vm->newDef;
> -    else
> -        return vm->def;
> +
> +    return vm->def;
>  }


I'm not really convinced these two changes are better.

>  
>  
> @@ -6029,7 +6029,9 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
>                               VIR_XML_PROP_NONZERO,
>                               &scsisrc->sgio)) < 0) {
>          return -1;
> -    } else if (rv > 0) {
> +    }
> +
> +    if (rv > 0) {
>          if (def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
>              virReportError(VIR_ERR_XML_ERROR, "%s",
>                             _("sgio is only supported for scsi host device"));
> @@ -6041,8 +6043,9 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
>                                       VIR_XML_PROP_NONE,
>                                       &scsisrc->rawio)) < 0) {
>          return -1;
> -    } else if (rv > 0 &&
> -               def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
> +    }
> +
> +    if (rv > 0 && def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
>          virReportError(VIR_ERR_XML_ERROR, "%s",
>                         _("rawio is only supported for scsi host device"));
>          return -1;


I don't mind eliminating the else, when the first 'if' is just an
error return/goto case.

> @@ -8056,15 +8059,15 @@ virDomainControllerModelTypeFromString(const virDomainControllerDef *def,
>  {
>      if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
>          return virDomainControllerModelSCSITypeFromString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
>          return virDomainControllerModelUSBTypeFromString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
>          return virDomainControllerModelPCITypeFromString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
>          return virDomainControllerModelIDETypeFromString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
>          return virDomainControllerModelVirtioSerialTypeFromString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
>          return virDomainControllerModelISATypeFromString(model);

This giant if/else should be a switch instead

>  
>      return -1;
> @@ -8077,15 +8080,15 @@ virDomainControllerModelTypeToString(virDomainControllerDef *def,
>  {
>      if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
>          return virDomainControllerModelSCSITypeToString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
>          return virDomainControllerModelUSBTypeToString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
>          return virDomainControllerModelPCITypeToString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
>          return virDomainControllerModelIDETypeToString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
>          return virDomainControllerModelVirtioSerialTypeToString(model);
> -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
> +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
>          return virDomainControllerModelISATypeToString(model);

Likewise a switch.

>  
>      return NULL;
> @@ -9915,9 +9918,10 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
>  
>      ctxt->node = cur;
>  
> -    if ((nsources = virXPathNodeSet("./source", ctxt, &sources)) < 0) {
> +    if ((nsources = virXPathNodeSet("./source", ctxt, &sources)) < 0)
>          goto error;
> -    } else if (nsources > 0) {
> +
> +    if (nsources > 0) {
>          /* Parse only the first source element since only one is used
>           * for chardev devices, the only exception is UDP type, where
>           * user can specify two source elements. */
> @@ -9926,7 +9930,8 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
>                             _("only one source element is allowed for "
>                               "character device"));
>              goto error;
> -        } else if (nsources > 2) {
> +        }
> +        if (nsources > 2) {
>              virReportError(VIR_ERR_XML_ERROR, "%s",
>                             _("only two source elements are allowed for "
>                               "character device"));
> @@ -10006,9 +10011,10 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
>          }
>      }
>  
> -    if ((nlogs = virXPathNodeSet("./log", ctxt, &logs)) < 0) {
> +    if ((nlogs = virXPathNodeSet("./log", ctxt, &logs)) < 0)
>          goto error;
> -    } else if (nlogs == 1) {
> +
> +    if (nlogs == 1) {
>          if (virDomainChrSourceDefParseLog(def, logs[0]) < 0)
>              goto error;
>      } else if (nlogs > 1) {
> @@ -10018,9 +10024,10 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
>          goto error;
>      }
>  
> -    if ((nprotocols = virXPathNodeSet("./protocol", ctxt, &protocols)) < 0) {
> +    if ((nprotocols = virXPathNodeSet("./protocol", ctxt, &protocols)) < 0)
>          goto error;
> -    } else if (nprotocols == 1) {
> +
> +    if (nprotocols == 1) {
>          if (virDomainChrSourceDefParseProtocol(def, protocols[0]) < 0)
>              goto error;
>      } else if (nprotocols > 1) {


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Re: [PATCH] domain_conf: remove else after return / goto
Posted by Kristina Hanicova 1 year, 9 months ago
On Wed, Jul 20, 2022 at 3:34 PM Daniel P. Berrangé <berrange@redhat.com>
wrote:

>
> What's the reasoning for making this change ?
>

I stumbled upon this and decided to rewrite code in src/conf/ that could be
easily improved.


>
> On Wed, Jul 20, 2022 at 02:59:58PM +0200, Kristina Hanicova wrote:
> > Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
> > ---
> >  src/conf/domain_conf.c | 55 ++++++++++++++++++++++++------------------
> >  1 file changed, 31 insertions(+), 24 deletions(-)
> >
> > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> > index 44a01ab628..bc4b74c1c8 100644
> > --- a/src/conf/domain_conf.c
> > +++ b/src/conf/domain_conf.c
> > @@ -4084,8 +4084,8 @@ virDomainObjGetPersistentDef(virDomainXMLOption
> *xmlopt,
> >
> >      if (domain->newDef)
> >          return domain->newDef;
> > -    else
> > -        return domain->def;
> > +
> > +    return domain->def;
> >  }
> > @@ -4223,8 +4223,8 @@ virDomainObjGetOneDefState(virDomainObj *vm,
> >
> >      if (virDomainObjIsActive(vm) && flags & VIR_DOMAIN_AFFECT_CONFIG)
> >          return vm->newDef;
> > -    else
> > -        return vm->def;
> > +
> > +    return vm->def;
> >  }
>
>
> I'm not really convinced these two changes are better.
>

Well, the else after return is redundant because it will never reach the
'else' branch if the condition is true.

I think this looks cleaner and is more readable, because having 'else'
branch indicates to me that no return / break / goto is in the previous
branch and the funcion can reach it.


>
> >
> >
> > @@ -6029,7 +6029,9 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
> >                               VIR_XML_PROP_NONZERO,
> >                               &scsisrc->sgio)) < 0) {
> >          return -1;
> > -    } else if (rv > 0) {
> > +    }
> > +
> > +    if (rv > 0) {
> >          if (def->source.subsys.type !=
> VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
> >              virReportError(VIR_ERR_XML_ERROR, "%s",
> >                             _("sgio is only supported for scsi host
> device"));
> > @@ -6041,8 +6043,9 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
> >                                       VIR_XML_PROP_NONE,
> >                                       &scsisrc->rawio)) < 0) {
> >          return -1;
> > -    } else if (rv > 0 &&
> > -               def->source.subsys.type !=
> VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
> > +    }
> > +
> > +    if (rv > 0 && def->source.subsys.type !=
> VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
> >          virReportError(VIR_ERR_XML_ERROR, "%s",
> >                         _("rawio is only supported for scsi host
> device"));
> >          return -1;
>
>
> I don't mind eliminating the else, when the first 'if' is just an
> error return/goto case.
>
> > @@ -8056,15 +8059,15 @@ virDomainControllerModelTypeFromString(const
> virDomainControllerDef *def,
> >  {
> >      if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
> >          return virDomainControllerModelSCSITypeFromString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
> >          return virDomainControllerModelUSBTypeFromString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
> >          return virDomainControllerModelPCITypeFromString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
> >          return virDomainControllerModelIDETypeFromString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
> >          return
> virDomainControllerModelVirtioSerialTypeFromString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
> >          return virDomainControllerModelISATypeFromString(model);
>
> This giant if/else should be a switch instead
>

Thanks, way better idea.


>
> >
> >      return -1;
> > @@ -8077,15 +8080,15 @@
> virDomainControllerModelTypeToString(virDomainControllerDef *def,
> >  {
> >      if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
> >          return virDomainControllerModelSCSITypeToString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_USB)
> >          return virDomainControllerModelUSBTypeToString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI)
> >          return virDomainControllerModelPCITypeToString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
> >          return virDomainControllerModelIDETypeToString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
> >          return virDomainControllerModelVirtioSerialTypeToString(model);
> > -    else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
> > +    if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
> >          return virDomainControllerModelISATypeToString(model);
>
> Likewise a switch.
>
> >
> >      return NULL;
> > @@ -9915,9 +9918,10 @@
> virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
> >
> >      ctxt->node = cur;
> >
> > -    if ((nsources = virXPathNodeSet("./source", ctxt, &sources)) < 0) {
> > +    if ((nsources = virXPathNodeSet("./source", ctxt, &sources)) < 0)
> >          goto error;
> > -    } else if (nsources > 0) {
> > +
> > +    if (nsources > 0) {
> >          /* Parse only the first source element since only one is used
> >           * for chardev devices, the only exception is UDP type, where
> >           * user can specify two source elements. */
> > @@ -9926,7 +9930,8 @@
> virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
> >                             _("only one source element is allowed for "
> >                               "character device"));
> >              goto error;
> > -        } else if (nsources > 2) {
> > +        }
> > +        if (nsources > 2) {
> >              virReportError(VIR_ERR_XML_ERROR, "%s",
> >                             _("only two source elements are allowed for "
> >                               "character device"));
> > @@ -10006,9 +10011,10 @@
> virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
> >          }
> >      }
> >
> > -    if ((nlogs = virXPathNodeSet("./log", ctxt, &logs)) < 0) {
> > +    if ((nlogs = virXPathNodeSet("./log", ctxt, &logs)) < 0)
> >          goto error;
> > -    } else if (nlogs == 1) {
> > +
> > +    if (nlogs == 1) {
> >          if (virDomainChrSourceDefParseLog(def, logs[0]) < 0)
> >              goto error;
> >      } else if (nlogs > 1) {
> > @@ -10018,9 +10024,10 @@
> virDomainChrSourceDefParseXML(virDomainChrSourceDef *def,
> >          goto error;
> >      }
> >
> > -    if ((nprotocols = virXPathNodeSet("./protocol", ctxt, &protocols))
> < 0) {
> > +    if ((nprotocols = virXPathNodeSet("./protocol", ctxt, &protocols))
> < 0)
> >          goto error;
> > -    } else if (nprotocols == 1) {
> > +
> > +    if (nprotocols == 1) {
> >          if (virDomainChrSourceDefParseProtocol(def, protocols[0]) < 0)
> >              goto error;
> >      } else if (nprotocols > 1) {
>
>
> With regards,
> Daniel
> --
> |: https://berrange.com      -o-
> https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-
> https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-
> https://www.instagram.com/dberrange :|
>
>

Regards,
Kristina