Re: [PATCH v3 02/25] util: virtypedparam: Use proper enum type for all switch() statements

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

 



On Wed, Apr 19, 2023 at 15:02:34 +0200, Martin Kletzander wrote:
> On Wed, Apr 19, 2023 at 02:04:19PM +0200, Peter Krempa wrote:
> > Ensure that all switch statements in this module use the proper type in
> > switch() statements to ensure complier protections.
> > 
> > Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
> > ---
> > src/util/virtypedparam.c | 12 ++++++++----
> > 1 file changed, 8 insertions(+), 4 deletions(-)
> > 
> > diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c
> > index 0cca16053d..974ec51a79 100644
> > --- a/src/util/virtypedparam.c
> > +++ b/src/util/virtypedparam.c
> > @@ -170,7 +170,7 @@ virTypedParameterToString(virTypedParameterPtr param)
> > {
> >     char *value = NULL;
> > 
> > -    switch (param->type) {
> > +    switch ((virTypedParameterType) param->type) {
> >     case VIR_TYPED_PARAM_INT:
> >         value = g_strdup_printf("%d", param->value.i);
> >         break;
> > @@ -192,6 +192,7 @@ virTypedParameterToString(virTypedParameterPtr param)
> >     case VIR_TYPED_PARAM_STRING:
> >         value = g_strdup(param->value.s);
> >         break;
> > +    case VIR_TYPED_PARAM_LAST:
> >     default:
> 
> To ensure compiler protection in switch() statements you should also
> remove the default case from the switch statements.

It actually works properly even with the 'default' case being present.
Additionally in case a caller passes in something which is not actually
a proper enum value (e.g. by typecasting) the 'default' case will be
applied.

In many new places we already do it like this.

> 
> With that changed:
> 
> Reviewed-by: Martin Kletzander <mkletzan@xxxxxxxxxx>





[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]

  Powered by Linux