On Tue, Sep 20, 2022 at 3:26 PM Antonio Quartulli <[email protected]> wrote:
> Hi,
>
> On 20/09/2022 18:42, Gert Doering wrote:
> > Hi,
> >
> > On Mon, Sep 19, 2022 at 12:06:18AM +0200, Antonio Quartulli wrote:
> >> + switch (session->opt->push_peer_info_detail)
> >> {
> >> - /* push version */
> >> - buf_printf(&out, "IV_VER=%s\n", PACKAGE_VERSION);
> >> + case 3:
> >> + {
> > ...
> >> + }
> >>
> >> + /* fall through */
> >
> > These {} brackets are not needed by C or our style guide.
>
> they are required when the first instruction after a case label is a
> variable declaration. So this is needed for case 3, but could be avoided
> for the other 2.
>
IMO, we should have a policy of avoiding variable declarations within case:
clauses.
Whether its the first line after the case: label or not, if the scope is
not limited using {}, it leads to possible jumping over initialization. Its
so easy to overlook that. Unfortunately C (unlike C++) complains loudly
only if the declaration is next to the label. One could always use {},
but that makes code hard to read. I think its much better to require that
all locals used within a switch block must be defined before all case:
labels.
Selva
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel