https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100020

            Bug ID: 100020
           Summary: RFE: Wmisleading-indentation (or similar warning) for
                    certain missing semicolons?
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

>From a discussion on Freenode's #gcc:

https://git.sr.ht/~rkta/irssi/commit/76c00f5ee29df9f66a4162891d41515ebc829f4b

@@ 307,6 307,8 @@ void printtext(void *server, const char *target, int level,
const char *text, ..
        g_return_if_fail(text != NULL);

        format_create_dest(&dest, server, target, level, NULL);
+       if (!dest.window)
+               return

        va_start(va, text);
        printtext_dest_args(&dest, text, va);

Spot the mistake?

The compiler "sees" it as:

        if (!dest.window)
                return va_start(va, text);

and chaos ensues.

This feels a lot like -Wmisleading-indentation, in that it's a case where how
the parser is "seeing" the code is very different from how a human reader might
see the code.

I'm not sure if it should be part of -Wmisleading-indentation or a separate
warning, but it seemed promising in terms of helping the user avoid a 2 hour
debugging session...

Reply via email to