Hi Pádraig,

> The attached should fix this issue.

>   process_input:
> +  bool pending_shell_escape_end = false;

It has a syntax error: With clang and with GCC versions < 11, it is invalid
to put a declaration after a label. See:

=================== foo.c =================
int main ()
{
  goto label;

 label:
  int ret = 0;
  return ret;
}
===========================================
$ gcc -c foo.c
foo.c: In function ‘main’:
foo.c:6:3: error: a label can only be part of a statement and a declaration is 
not a statement
    6 |   int ret = 0;
      |   ^~~
$ clang -c foo.c
foo.c:6:3: error: expected expression
    6 |   int ret = 0;
      |   ^
foo.c:7:10: error: use of undeclared identifier 'ret'
    7 |   return ret;
      |          ^
2 errors generated.

The workaround is trivial: Add a semicolon after the colon:

   process_input: ;
    bool pending_shell_escape_end = false;

Bruno




Reply via email to